Это происходит на многих языках и проистекает из того факта, что мы обычно не можем хранить двойные или плавающие числа точно в цифровом оборудовании. Для подробного объяснения того, как двойные числа, числа с плавающей запятой и все другие значения с плавающей запятой часто хранятся, посмотрите на различные спецификации IEEE, описанные в Википедии. Например: http://en.wikipedia.org/wiki/Double_precision
Конечно, есть и другие форматы, например, формат с фиксированной запятой. Но эта неточность есть в большинстве языков, и поэтому вам часто нужно использовать эпсилон-тесты вместо тестов на равенство при использовании двойных в условных выражениях (то есть abs (x-y)
Как вы справляетесь с этой неточностью, зависит от вас и зависит от вашего заявления.