Почему числа с плавающей запятой печатаются так по-разному?

Это'Общеизвестно, что (большинство) чисел с плавающей запятой не сохраняются точно (при использовании формата IEEE-754). Так что не следуетсделать это:

0.3 - 0.2 === 0.1; // very wrong

... как это приведет кfalse, если не был использован какой-либо конкретный тип / класс произвольной точности (BigDecimal вДжава/Рубин,BCMath в PHP,Math :: BigInt /Math :: BigFloat в Perl, чтобы назвать несколько) вместо этого.

И все же я удивляюсь, почему, когда кто-то пытается напечатать результат этого выражения,0.3 - 0.2, скриптовые языки (Perl а такжеPHP) дать0.1, но "виртуальная машина" одни (Джава,JavaScript а такжеErlang) дать что-то более похожее на0.09999999999999998 вместо?

И почему это также несовместимо с Ruby?версия 1.8.6 (кодовая панель) дает,0.1версия 1.9.3 (ideone) дает0.0999...

Ответы на вопрос(5)

Ваш ответ на вопрос