Always false float comparisons
Ecstatic Coder via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jun 29 11:03:39 PDT 2017
On Monday, 9 May 2016 at 11:16:53 UTC, ZombineDev wrote:
> 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?
>
> Yes, I think it is a good idea, just like emitting a warning
> for mismatched signed/unsigned comparison.
I agree for the float but not for the long/ulong comparisons.
I often do code like "x < array.length" where x needs to be a
long to be able to handle negative values.
I want my code to compile without warning, and therefore I'm
against requiring "x < array.length.to!long()" to remove that
warning.
More information about the Digitalmars-d
mailing list