It's not JavaScript that's poor at math, it's computers in general. The reason is that math is performed base 2, not base 10, and few floating point numbers have an exact representation in base 2. All the details (which apply to all languages, not just Java or JavaScript) can be found in two articles linked in #20 in the Java Beginners FAQ.