"9.99".to_f
=> 999.0
Est-ce le comportement attendu? Comment convertir un "9,99" en 9,99Ruby string to_f ... bug?
"9.99".to_f
=> 999.0
Est-ce le comportement attendu? Comment convertir un "9,99" en 9,99Ruby string to_f ... bug?
Dans quel environnement utilisez-vous? Mon devinez est qu'il traite "." comme un séparateur de milliers (qui se trouve être au mauvais endroit dans ce cas) et "," comme un point décimal.
Essayez
"9,99".to_f
... mais si cela fonctionne, il est probablement en fonction de la culture actuelle du système, et vous devriez chercher à trouver un moyen invariante culture de conversion.
@Chirantan: La question est de savoir ce qu'il fait sur l'ordinateur de l'OP. Cela aidera à détecter s'il s'agit d'un problème lié à la culture. –
Quelle version de Ruby utilisez-vous?
"9.99" .to_f se traduit par 9.99 pour moi en utilisant Ruby 1.8.6 sous Windows.
Quelle version? Cela fonctionne comme prévu le 1.8.7.
irb(main):001:0> "9.99".to_f
=> 9.99
.
ruby -e "puts \"9.99\".to_f"
9.99
Peut-être un petit bijou méchant ou un plugin Rails a changé votre chaîne # to_f comportement ...
Bien sûr. C'est une conversion dépendant de la culture. Testé sur IronRuby 0.9
Cela ressemble à un bug Ruby Enterprise Edition –
http://groups.google.com/group/emm-ruby/browse_thread/thread/d327b07bbcb1351c –
Ouch. Par curiosité, est-ce que cela cause un échec pour Rubyspec? –