特定のレポートを実行すると、非常に奇妙な動作が見られます。
>> 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)が表示されますが、これはRHEL4ボックスにのみ表示されます。