Рубиновая строка to_f ... ошибка? - PullRequest
4 голосов
/ 12 ноября 2009
"9.99".to_f
=> 999.0

Это ожидаемое поведение? Как бы преобразовать «9,99» в 9,99

Ответы [ 5 ]

3 голосов
/ 12 ноября 2009

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

Попробуйте

"9,99".to_f

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

2 голосов
/ 12 ноября 2009

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

"9.99" .to_f приводит к 9.99 для меня, используя Ruby 1.8.6 в Windows.

1 голос
/ 12 ноября 2009

Возможно, какой-нибудь неприятный гем или плагин Rails изменил ваше поведение String # to_f ...

1 голос
/ 12 ноября 2009

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

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

.

ruby -e "puts \"9.99\".to_f"
9.99
0 голосов
/ 13 ноября 2009

Конечно. Это культурно-зависимое обращение. Проверено на IronRuby 0,9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...