In Javascript, all numbers are floating numbers and are prone to floating point approximation.
I've never used Javascript, and if this is true I don't think I ever will.
The reason why people complain so much about this behaviour is because they don't understand dynamic languages and floating point. If it was a mod 2^n wraparound there wouldn't be as much surprise.