web-dev-qa-db-fra.com

Ruby - chaîne de conversion to float return 0.0

Dans une variable est stockée cette valeur: $10.00 Et je dois obtenir ce 10.00

J'ai essayé de convertir cette valeur en float:

new_price = '%.2f' % (price.to_f)

mais je reçois juste 0.0.

Quel est le problème avec cela? J'ai essayé aussi

price = price.strip
price[0]=""
new_price = '%.2f' % (price.to_f)

Mais même cela ne m'a pas aidé ... où est un problème?

Merci

17
user984621

Vous devez d'abord supprimer le $. Le tout comme ça:

'%.2f' % '$10.00'.delete( "$" ).to_f

ou

'%.2f' % '$10.00'[1..-1].to_f

si vous aimez la densité et pouvez rencontrer non dollars. 

23
froderik

Pour le définir dans une variable:

 current_price= '%.2f' % '$10.00'.delete( "$" ).to_f

L'erreur la plus courante est une valeur sur plusieurs milliers où il y a une virgule dans la chaîne, comme: 10.000.00. La virgule provoquera la même erreur de troncature, mais pas la décimale, et beaucoup de programmeurs ne l’accepteront même pas (nous ne la remarquons même plus). Pour résoudre ce problème:

current_price= '%.2f' % '10,000.00'.delete( "," ).to_f
0
Odysseus Ithaca