[~/ruby/rails/sas]$ ruby --version
ruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0]
在Mac雪豹10.6.3
谁能帮助解释为什么浮球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,我知道,也许这样做使用2种不同的数据类型的算术运算不建议使用,但这种行为是那么的陌生。
从现在开始,我必须在做任何算术运算之前检查变量数据类型,这似乎是明智的。
希望有人能给我一个关于正在发生的事情的见解。
这不是由两种类型的混合。从输出“#”可以看到你的变量ex的值是28.4,这个问题必须发生在to_d函数中。我无法提供更多信息,因为我无法重现您的问题。 –
2010-06-08 09:27:32