При обновлении до ruby 1.9 у меня не проходит тест при сравнении ожидаемых и фактических значений для BigDecimal
, являющегося результатом деления числа с плавающей запятой.
expected: '0.495E0',9(18) got: '0.4950000000 0000005E0',18(27)
поиск таких вещей, как «большая десятичная точность в рубине» и «большие десятичные изменения в рубине 1.9» ни к чему не приводит.
Как изменилось поведение BigDecimal
в ruby 1.9?
обновление 1
> RUBY_VERSION
=> "1.8.7"
> 1.23.to_d
=> #<BigDecimal:1034630a8,'0.123E1',18(18)>
> RUBY_VERSION
=> "1.9.3"
> 1.23.to_d
=> #<BigDecimal:1029f3988,'0.123E1',18(45)>
Что означают 18(18) и 18(45)? Точность я себе представляю, но что такое обозначение/единица измерения?
обновление 2
выполняется код:
((10 - 0.1) * (5.0/100)).to_d
Мой тест ожидает, что это будет равно (==) следующему:
0.495.to_f
Пройдено в 1.8, не работает в 1.9.2 и 1.9.3