Handling big FP numbers
Murilo
murilomiranda92 at hotmail.com
Sun Feb 10 20:25:02 UTC 2019
On Saturday, 9 February 2019 at 05:46:22 UTC, H. S. Teoh wrote:
> On Sat, Feb 09, 2019 at 03:52:38AM +0000, Murilo via
> Digitalmars-d-learn wrote:
>> On Saturday, 9 February 2019 at 03:28:24 UTC, Adam D. Ruppe
>> wrote:
> [...]
>> > But you can change this with the format specifiers (use
>> > `writefln` instead of `writeln` and give a precision
>> > argument) or, of course, you can use the same C printf
>> > function from D.
>>
>> Thanks, but which precision specifier should I use? I already
>> tried "%.20f" but it still produces a result different from C?
>> Is there a way to make it identical to C?
>
> I say again, you're asking for far more digits than are
> actually there. The extra digits are only an illusion of
> accuracy; they are essentially garbage values that have no real
> meaning. It really does not make any sense to print more digits
> than are actually there.
>
> On the other hand, if your purpose is to export the double in a
> textual representation that guarantees reproduction of exactly
> the same bits when imported later, you could use the %a format
> which writes out the mantissa in exact hexadecimal form. It can
> then be parsed again later to reproduce the same bits as was in
> the original double.
>
> Or if your goal is simply to replicate C behaviour, there's
> also the option of calling the C fprintf directly. Just import
> core.stdc.stdio or declare the prototype yourself in an
> extern(C) declaration.
>
>
> T
Thanks, but even using core.stdc.stdio.fprintf() it still shows a
different result on the screen. It seems this is a feature of D I
will have to get used to and accept the fact I can't always get
the same number as in C even though in the end it doesn't make a
difference cause as you explained the final digits are just
garbage anyway.
More information about the Digitalmars-d-learn
mailing list