There is no right or wrong when you compare floating point
values for equality (and inequality) unless those values can be
represented exactly in the machine. 1.0 is famously not
representable exactly. (It is similar to how 1/3 cannot be
represented in the decimal system.)
Here I tested one aspect of IEEE-754 floating point behavior (not
ordinary floating point calculations for daily job). All integers
can be represented exactly until some maximum value.
I believe that first section from http://dlang.org/float.html
explains why behavior of my program should not be considered a
bug in the compiler. But does it mean that due to these rules the
results of the computation are not according to IEEE-754 for some
specified floating point format (32 bit single precision in my
examples)?
For example, according to IEEE-754 specification if we work with
32bit floating point numbers (floats in D) then the following
pseudo code prints 'Works'.
F32 f = 16777216.0f;
F32 f2 = f + 0.1f;
if is_the_same_binary_presentation(f, f2)
Print("Works");
As I understand D does not guarantee this. Please confirm if it's
correct.