Я бегу:
[~/ruby/rails/sas]$ ruby --version
ruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0]
на Mac Snow Leopard 10.6.3
Может кто-нибудь помочь объяснить, почему вычитание Float и BigDecimal может быть таким неправильным.
[~/ruby/rails/sas]$ console
Loading development environment (Rails 2.1.1)
>> num = 30.0
=> 30.0
>> num.class
=> Float
>> ex = 28.04.to_d
=> #<BigDecimal:105367e40,'0.284E2',8(8)>
>> ex.class
=> BigDecimal
>> num - ex
=> 1.6
>> _.class
=> Float
>>
Я надеялся, что результат должен быть 1,96, я знаю, что, возможно, делать арифметическую операцию с использованием двух разных типов данных не рекомендуется, но это странное поведение.
Кажется, что мудрос этого момента я должен проверять тип данных переменных, прежде чем выполнять какую-либо арифметическую операцию.
Надеюсь, кто-нибудь сможет дать мне представление о том, что происходит.