Always false float comparisons

qznc via Digitalmars-d digitalmars-d at puremagic.com
Mon May 9 02:25:18 PDT 2016


On Monday, 9 May 2016 at 09:10:19 UTC, Walter Bright wrote:
> Don Clugston pointed out in his DConf 2016 talk that:
>
>     float f = 1.30;
>     assert(f == 1.30);
>
> will always be false since 1.30 is not representable as a 
> float. However,
>
>     float f = 1.30;
>     assert(f == cast(float)1.30);
>
> will be true.
>
> So, should the compiler emit a warning for the former case?

What is the actual reason for the mismatch?

Does f lose precision as a float, while the 1.30 literal is a 
more precise double/real? Comparing float and double might be 
worth a warning.

Does it encode the two literals differently? If so, why?


More information about the Digitalmars-d mailing list