2012-03-31 11 views
48

小数点以下を扱う必要があります。 私のプログラムでは、ユーザはその数字を変換するために小数点以下の数字を入れる必要があります。ルビの文字列を10進数に変換する

問題は次のとおりです。引数を数値に変換しようとすると、小数点なしの整数が得られます。

# ARGV[0] is: 44.33 

size = ARGV[0] 

puts size.to_i 
# size is: 44 
# :(

答えて

78

to_iに電話すると整数になります。

to_fを呼び出してみると、浮動小数点数を取得する必要があります。

さらに多くの文字列変換方法については、look here

-2

また、小数点の正確な数を持っているためにはsprintfを使用することができます。

a = 2.45 
p sprintf "%.6f", a #=> "2.450000" 
+3

彼は文字列を10進数に変換するよう求めましたが、それ以外の方法ではありません。 –

3

あなたはまた、それを

a = '2.45' 
Decimal(a) # => 2.45 

UPDATE小数点クラスを使用することができますよう

使用BigDecimalをを@ bigtex777記載:

出典:http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html

+1

NoMethodError(定義されていないメソッド 'Decimal 'for ...シリアル"以前のワーキングコード "破壊チームの別の"機能/改良 "、間違いなく – JosephK

+2

これはどちらの場合でも動作するとは思われません。 BigDecimal.new( '3.333') ' – bigtex777

+0

Decimal()は、私が覚えていなかったいくつかの特定のルビーバージョンからのメソッドです:BigDecimalはruby stdlibに属します - > http:// ruby​​-doc .org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.htmlそれを使う方が良いでしょう。 – lucianosousa

関連する問題