BigDecimal в 1.8 против 1.9

При обновлении до 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

5
задан John Bachir 10 March 2012 в 04:58
поделиться