Duplicate:
- Why do I see a double variable initialized to some value like 21.4 as 21.399999618530273?
- Is JavaScript’s math broken?
- many, many other questions, for every language and platform, all with the same answer.
trace( ">> " + (399.6-(Math.floor(399.6))) );
prints out
>> 0.6000000000000227
why?
Floating Point rounding errors. Floating point numbers can’t represent some values exactly, so what you are seeing is the limitations of using FP numbers. The mantissa (the part of the FP num that gives the accuracy) is only a certain number of bits, and when something can’t be exactly represented, you get results like the above. I know for a fact that 0.1 can’t be represented exactly, so it makes sense that 0.6 can’t as well.