我遇到了一个非常奇怪的错误。我在Solaris10,使用红宝石的企业版(红宝石的1.8.6(2008-08-08补286)[i386-solaris2.10])与轨2.3.4.我有一个非常奇怪的错误。在移民和难民委员会:

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> 

一切都很好!但是,当我在轨控制台和做同样的事情,"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。很奇怪!是的,可能是一个错误,在红宝石的企业版?但是,如果是这样,为什么不让它发生与移民和难民委员会(它也是瑞版本,我双重检查).任何想法?

  • 约翰内斯
有帮助吗?

解决方案

我不是专家但是我的猜测是,这种行为是一个副作用的是在德国。

显然,to_f使用的一个国有化版本的十进制分离器。我怀疑,如果你改变你的计算机的国籍设置我们,这将会改变。

编辑:

不,这有助于你的问题。但是一个小小的更多的背景信息可能:

当你这样做 123.to_f 在移民和难民委员会,你其实执行 123.to_f.to_s (因为移民和难民委员会需要打印出你的结果)。

你可能会得到更好的服务具有明确的格式化使用的格式操作员 %:

"%5.1f" % 123 => 123.0

编辑:

之后,一些挖掘,发现了一些真正是相关和有用的信息:

http://rubyforge.org/forum/forum.php?thread_id=32460&forum_id=723

这是一个问题,是已知的红宝石社区,但不会是"固定的",因为这样的。解决方法是提供在线程。

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