2009-11-12 3 views
4
"9.99".to_f 
=> 999.0 

Является ли это ожидаемым поведением? Как конвертировать «9.99» в 9.99Ruby string to_f ... ошибка?

+1

Это похоже, что это может быть ошибка рубин Enterprise Edition – 2009-11-12 19:26:45

+3

http://groups.google.com/group/emm-ruby/browse_thread/thread/d327b07bbcb1351c – 2009-11-12 19:28:26

+0

Уч. Из любопытства, это вызывает провал для rubyspec? –

ответ

3

В каком языке вы работаете? Мой угадывает в том, что он лечит "." как разделитель тысяч (который в данном случае находится не в том месте) и «,» как десятичная точка.

Попробуйте

"9,99".to_f 

... но если это работает, это, вероятно, зависит от текущей культуре системы, и вы должны смотреть, чтобы найти закваску инвариантно способ преобразования.

+0

@ Чирантан: Вопрос в том, что он делает на компьютере OP. Это поможет определить, является ли это проблемой, связанной с культурой. –

2

Какую версию Ruby вы используете?

«9.99» .to_f приводит к 9.99 для меня с использованием Ruby 1.8.6 на Windows.

1

Какая версия? Это работает как ожидается на 1.8.7.

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

.

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

Может быть, некоторые противным камень или плагин Rails изменили Струнный # to_f поведение ...

-1

Sure. Это конверсия, зависящая от культуры. Проверено на IronRuby 0,9