Rails 3 Ошибка округления с плавающей запятой

Запуск рубина 1.8.7.

(1,005 * 100).Результат раунда: 100

(1,006 * 100).Результат раунда: 101

Результат 100.5.раунда: 101

(1,005 * 100) результат: 100,5

Что здесь происходит? Может ли кто-нибудь попробовать это в последней версии рубина, пожалуйста? Спасибо!


person vanboom    schedule 25.10.2012    source источник


Ответы (1)


Математика с плавающей запятой — это то, что происходит.

Для последнего я не получаю 100,5, и вы тоже, даже если по какой-то причине он отображается так:

Loading development environment (Rails 3.2.8)
1.9.3p194 :001 > (1.005 * 100).round
 => 100 
1.9.3p194 :002 > (1.006 * 100).round
 => 101 
1.9.3p194 :003 > 100.5.round
 => 101 
1.9.3p194 :004 > (1.005 * 100)
 => 100.49999999999999 
person cjc343    schedule 25.10.2012
comment
Спасибо! Когда я ввожу (1,005 * 100) в консоль, она возвращает 100,5 в моей системе :) Спасибо - я думаю, это хорошо известно. Похоже, мне нужно сделать кое-какой рефакторинг! - person vanboom; 26.10.2012