【发布时间】:2010-11-12 18:30:30
【问题描述】:
当我运行某些报告时,我看到了非常非常奇怪的行为:
>> p = BigDecimal.new('0.1785990254E5')
=> #<BigDecimal:b649b978,'0.1785990254E5',16(16)>
>> q = BigDecimal.new('0.76149149E4')
=> #<BigDecimal:b64968d8,'0.76149149E4',8(16)>
>> p-q
=> #<BigDecimal:b6495ab4,'0.124498764E5',16(32)>
>> p.to_s
=> "17859.90254"
>> q.to_s
=> "7614.9149"
>> (p-q).to_s
=> "10244.98764"
如果您注意到,p.to_s 和 BigDecimal 的表示看起来一致。与q 和q.to_s 相同。但是,p-q 的字符串表示为“0.1244...”,但在格式化为“10244.98...”时会出现
当我通过 number_to_currency 运行它时,它实际上显示了错误的数字 ($12,449.88) 而不是预期的数字,但仅在我的 RHEL 4 Box 上。
【问题讨论】:
标签: ruby-on-rails ruby floating-point bigdecimal