小数点以下を扱う必要があります。 私のプログラムでは、ユーザはその数字を変換するために小数点以下の数字を入れる必要があります。ルビの文字列を10進数に変換する
問題は次のとおりです。引数を数値に変換しようとすると、小数点なしの整数が得られます。
# ARGV[0] is: 44.33
size = ARGV[0]
puts size.to_i
# size is: 44
# :(
小数点以下を扱う必要があります。 私のプログラムでは、ユーザはその数字を変換するために小数点以下の数字を入れる必要があります。ルビの文字列を10進数に変換する
問題は次のとおりです。引数を数値に変換しようとすると、小数点なしの整数が得られます。
# ARGV[0] is: 44.33
size = ARGV[0]
puts size.to_i
# size is: 44
# :(
また、小数点の正確な数を持っているためにはsprintfを使用することができます。
a = 2.45
p sprintf "%.6f", a #=> "2.450000"
あなたはまた、それを
a = '2.45'
Decimal(a) # => 2.45
UPDATE小数点クラスを使用することができますよう
使用BigDecimalをを@ bigtex777記載:
出典:http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html
NoMethodError(定義されていないメソッド 'Decimal 'for ...シリアル"以前のワーキングコード "破壊チームの別の"機能/改良 "、間違いなく – JosephK
これはどちらの場合でも動作するとは思われません。 BigDecimal.new( '3.333') ' – bigtex777
Decimal()は、私が覚えていなかったいくつかの特定のルビーバージョンからのメソッドです:BigDecimalはruby stdlibに属します - > http:// ruby-doc .org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.htmlそれを使う方が良いでしょう。 – lucianosousa
大文字の変換方法は、よく確立されたRubyイディオムです。 See this great post from Advi Grimm
Integer("641339524823408659")
=> 641339524823408659
彼は文字列を10進数に変換するよう求めましたが、それ以外の方法ではありません。 –