2013-02-28 8 views
15

w zmiennej przechowywany jest to wartość: $10.00 I muszę dostać ten 10.00Ruby - konwersja ciąg unosić powrócić 0.0

Próbowałem przekonwertować tę wartość float:

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

ale dostaję tylko 0.0.

Co jest nie tak z tym? Próbowałem również

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

Ale nawet to nie może mi pomóc ... gdzie jest problem?

Dzięki

Odpowiedz

22

Trzeba usunąć $ pierwszy. Cała sprawa tak:

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

lub

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

jeśli lubisz gęstość i może napotkać non dolarów.

+0

dziękuję za odpowiedź, ale wynik to nadal tylko '10.0' zamiast' 10,00'. – user984621

+0

nie dla mnie '1.9.3-p392: 006> '% .2f'% '$ 10,00'.delete (" $ ") .to_f =>" 10.00 "' – froderik

+0

jak się masz? – froderik

-1

Dodawanie do odpowiedzi froderick dnia:

Trzeba usunąć $ pierwszy. Cała sprawa tak:

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

lub

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

jeśli lubisz gęstość i może napotkać non dolarów. trzeba formatować kod wyjściowy, aby zapewnić, że masz dwa miejsca po przecinku> z

musisz sformatować ciąg wyjściowy, aby uzyskać dwa miejsca po przecinku.

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

, ale jest już zrobione .... :-) – froderik