当我运行某些报告时,我看到了非常非常奇怪的行为:
>> 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 上。