web-dev-qa-db-ja.com

rubyで文字列を10進数に変換します

小数で作業する必要があります。私のプログラムでは、ユーザーはその数値を変換するために小数付きの数値を入力する必要があります。

問題は、引数を数値に変換しようとすると、小数のない整数が得られることです。

# ARGV[0] is: 44.33

size = ARGV[0]

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

to_iを呼び出すと、整数が得られます。

to_fを呼び出してみてください。フロートを取得する必要があります。

その他の文字列変換方法については、 こちらをご覧ください

87

また、decimalクラスを使用することもできます

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

更新:

前述の@ bigtex777としてbigdecimalを使用します。

ソース: http://Ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html

7
lucianosousa

このようなバグを回避するために計算でより正確な答えが必要な場合は、 https://www.codecademy.com/en/forum_questions/50fe886f68fc44056f00626c 10進数への変換の例を使用できます。

require 'bigdecimal'
require 'bigdecimal/util'

size = ARGV[0]
size = size.to_d

これにより、印刷された数値が10進数になりますが、再度浮動小数点数にしたい場合は、このto_fをもう一度入力してください

size=size.to_f

puts size
5
Tau-fan Ar-if

大文字の変換方法は、十分に確立されたRubyイディオムです。 Advi Grimmのこの素晴らしい投稿を参照

Integer("641339524823408659")
=> 641339524823408659
1
MegaTux