Ruby string to_f ... bug?

时间:2009-11-12 19:25:11

标签: ruby

"9.99".to_f
=> 999.0

这是预期的行为吗?如何将“9.99”转换为9.99

5 个答案:

答案 0 :(得分:3)

你在哪个地区工作?我的猜测是它正在治疗“。”作为千位分隔符(在这种情况下碰巧在错误的位置)和“,”作为小数点。

尝试

"9,99".to_f

...但如果可行的话,它可能依赖于当前的系统文化,你应该寻找一种文化不变的转换方式。

答案 1 :(得分:2)

您使用的是哪个版本的Ruby?

“9.99”.to_f对我在Windows上使用Ruby 1.8.6的结果为9.99。

答案 2 :(得分:1)

什么版本?这在1.8.7上按预期工作。

irb(main):001:0> "9.99".to_f
=> 9.99

ruby -e "puts \"9.99\".to_f"
9.99

答案 3 :(得分:1)

也许一些讨厌的gem或Rails插件改变了你的String#to_f行为......

答案 4 :(得分:-1)

不确定。这是一种依赖于文化的转换。在IronRuby 0.9上测试