Always false float comparisons

Chris via Digitalmars-d digitalmars-d at puremagic.com
Mon May 9 03:30:36 PDT 2016


On Monday, 9 May 2016 at 10:16:54 UTC, Jens Mueller wrote:
> 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

+1


More information about the Digitalmars-d mailing list