Always false float comparisons
Jens Mueller via Digitalmars-d
digitalmars-d at puremagic.com
Mon May 9 03:16:54 PDT 2016
Walter Bright via Digitalmars-d 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?
Since
assert(f == 1.30f);
passes I find the root cause lies in the implicit type conversion from
float to double. Warning for those comparisons should be fine. Shouldn't
mix them anyway.
I wonder what's the difference between 1.30f and cast(float)1.30.
Jens
More information about the Digitalmars-d
mailing list