News for hackers. Stuff that matters.
Re:0.30000000000000004 by panic on Friday November 13, 2015 @07:45AM (#10559504)
The only problem I see is that often the floating point format is not specified properly. When one writes "0.3", what does it actually mean?

It's perfectly well-specified. If you are using double-precision floating point, "0.3" means 0x3fd3333333333333 (as bits), or 0.299999999999999988897769753748434595763683319091796875 (as an exact number: the closest representable number to 0.3).

Re:0.30000000000000004 by static_noise on Friday November 13, 2015 @08:48AM (#10559786)
When your compiler does its internal calculations in double precision float you are right.

But why should it do so? Do all languages specify the details of how floating point input is handled by the compiler/interpreter?

Re:0.30000000000000004 by gsnedders on Friday November 13, 2015 @09:18AM (#10559942)
Most languages do (though implementation bugs are common—plenty of languages where 64-bit precision is required actually end up being implemented in such a way that 80-bit precision is used on x86).

That said, a lot of low-level languages don't: C doesn't guarantee this, for example. C doesn't even mandate IEEE 754, and it merely requires that "float" is a subset of the values of "double" which is itself a subset of the values of "long double".

Re:0.30000000000000004 by tinco on Friday November 13, 2015 @09:01AM (#10559852)
I think so, yes.