Может ли кто-нибудь объяснить, почему следующая рубиновая рутина дает мне 2.0 в результате? Я думаю, что округление поплавков является корнем ошибки.Рубиновое вычитание числа чисел неправильно?
puts(999_999_999_999_999_9.0 - 999_999_999_999_999_8.0);
= 2.0
Те же ошибки?
puts(999_999_999_999_999_3.0 - 999_999_999_999_999_2.0);
= 0.0
Я управляю Ruby 1.9.3p448 (2013-06-27) [i386-mingw32].
Да, это округление с плавающей запятой. Введенные вами цифры не могут быть представлены с полной точностью с использованием класса Ruby' Float'. Неточность не распространяется равномерно, и представление ваших вторых двух чисел на самом деле идентично - это тот же самый объект «Float». –
Спасибо за ваш ответ! –