Я столкнулся с очень странной ошибкой. Я на Solaris 10, используя Ruby Enterprise Edition (ruby 1.8.6 (2008-08-08 patchlevel 286) [i386-solaris2.10]) с Rails 2.3.4. У меня очень странная ошибка. В irb:Ruby 1.8.6 BigDecimal.to_f всегда возвращает «0,0» на Solaris
irb(main):001:0> require 'bigdecimal'
=> true
irb(main):002:0> b = BigDecimal.new('123')
=> #<BigDecimal:834d0e8,'0.123E3',4(8)>
irb(main):003:0> b.to_s
=> "0.123E3"
irb(main):004:0> b.to_i
=> 123
irb(main):005:0> b.to_f
=> 123.0
irb(main):006:0>
Все в порядке! НО, когда я запускаю консоль Rails и делаю то же самое, «to_f» всегда возвращает «0,0».
>> b = BigDecimal.new('123')
=> #<BigDecimal:9e80e14,'0.123E3',4(8)>
>> b.to_s
=> "123.0"
>> b.to_i
=> 123
>> b.to_f
=> 0,0
Этого не происходит, когда я делаю то же самое на своем Mac. Очень странно! Возможно, это ошибка в Ruby Enterprise Edition? Но если это так, то почему это не происходит с irb (который также является версией REE, я дважды проверял). Есть идеи?
- Johannes
Я обновил свой ответ с некоторой информацией, которая должна позволить вам взять под контроль форматирование. –