我看到,当我运行某些报告非常,非常奇怪的行为:

>> 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的表现看起来是一致的。同样的,qq.to_s。然而,p-q具有表示为字符串“0.1244 ...”,但是当为“10244.98 ...”

格式化出来

当我通过number_to_currency运行这一点,实际上显示了错误的号码($ 12,449.88),而不是预期的数量,但仅限于我的RHEL 4盒。

有帮助吗?

解决方案

在看的版本后,它似乎我在我的本地机器上运行的RHEL箱的Ruby 1.8.5和Ruby 1.8.6。我想这大概占了问题?奇怪的问题确实

更新: 确认 - 升级到1.8.6解决的问题

其他提示

>> p = BigDecimal.new('0.1785990254E5')
=> #<BigDecimal:51c9e4,'0.1785990254E5',16(16)>
>> q = BigDecimal.new('0.76149149E4')
=> #<BigDecimal:518e98,'0.76149149E4',8(16)>
>> p-q
=> #<BigDecimal:516af8,'0.1024498764E5',16(32)>
>> (p-q).to_s
=> "0.1024498764E5"

在我的handcompiled红宝石1.8.7 / OSX

听起来他们可能在两者之间有固定在库中的错误 - 但仅在速度的提高可能是一个足够的理由升级(我觉得你如果你坚持维持unupgradeable应用寿)

我有点困惑,为什么你想显示0.1024498764E5货币。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top