[Issue 366] Adding trailing zeros to a real literal makes it smaller!
Walter Bright
newshound at digitalmars.com
Tue Sep 26 00:56:40 PDT 2006
Don Clugston wrote:
>> Conversion from decimal to binary is done using "round to nearest", not
>> "truncate towards zero". Round to nearest will 50% of the time result
>> in larger
>> numbers than truncating towards 0. Adding 0's to the literal is the
>> same as
>> truncate towards zero.
>
> In fact, adding ANY digits to the literal makes it smaller. This one
> also fails:
>
> static assert(
> 0.6600_0112_2408_4800_3227e-8L <=
> 0.6600_0112_2408_4800_3227999999999999999999999999999999e-8L);
Those extra digits are beyond the precision of the floating point
format. Try printing them out in %a format to see the bit pattern. The
behavior is governed by C's strtold, and it does the same thing in gcc.
I can send you the source to strtold if you want to examine it.
More information about the Digitalmars-d-bugs
mailing list