Я вижу очень, ОЧЕНЬ странное поведение при запуске определенных отчетов:
>> 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.