[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