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

Est-ce le comportement attendu? Comment convertir un "9,99" en 9,99Ruby string to_f ... bug?

+1

Cela ressemble à un bug Ruby Enterprise Edition –

+3

http://groups.google.com/group/emm-ruby/browse_thread/thread/d327b07bbcb1351c –

+0

Ouch. Par curiosité, est-ce que cela cause un échec pour Rubyspec? –

Répondre

3

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.

+0

@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. –

2

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.

1

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 
1

Peut-être un petit bijou méchant ou un plugin Rails a changé votre chaîne # to_f comportement ...

-1

Bien sûr. C'est une conversion dépendant de la culture. Testé sur IronRuby 0.9