BigDecimal в 1,8 против 1,9
При обновлении до ruby 1.9 у меня есть провальный тест при сравнении ожидаемых и фактических значений дляBigDecimal
это результат деления поплавка.
expected: '0.495E0',9(18) got: '0.4950000000 0000005E0',18(27)
поиск таких вещей, как "bigdecimal ruby precision" и "bigdecimal changes ruby 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