2013-02-28 5 views
15

Dans une variable est stockée cette valeur: $10.00 Et je dois obtenir ce 10.00Ruby - chaîne de conversion flotter retour 0,0

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-il un problème?

Merci

Répondre

22

Vous devez retirer le $ premier. Le tout comme ceci:

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

ou

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

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

+0

merci pour votre réponse, mais la sortie est toujours juste '10.0' au lieu de' 10.00'. – user984621

+0

pas pour moi '1.9.3-p392: 006> '% .2f'% '$ 10.00'delete (" $ ") .to_f =>" 10.00 "' – froderik

+0

comment le faites-vous? – froderik

-1

Ajout à la réponse de Froderick de:

Vous devez supprimer le $ premier. Le tout comme ceci:

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

ou

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

si vous aimez la densité et peut rencontrer non dollars. vous devez formater le code de sortie pour vous assurer que vous obtenez deux décimales> avec

Vous devez formater votre chaîne de sortie pour vous assurer d'obtenir deux décimales.

puts "Current amount: #{format("%.2f", amount)}" 
+0

mais c'est déjà fait .... :-) – froderik