将string转换为ruby中的十进制数字

我需要使用小数。 在我的程序中,用户需要input小数来转换该数字。

问题是:如果我尝试将参数转换为数字,我会得到一个不带小数的整数。

# ARGV[0] is: 44.33 size = ARGV[0] puts size.to_i # size is: 44 # :( 

你打给to_i ,你得到整数。

尝试调用to_f ,你应该得到一个浮点数。

有关更多string转换方法, 请看这里 。

你也可以使用它的小数类

a = '2.45' Decimal(a) 2.45

更新:

使用bigdecimal作为@ bigtex777提到:

来源: http : //ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html

大写的转换方法是一个成熟的Ruby成语。 从Advi Grimm看这个伟大的职位

 Integer("641339524823408659") => 641339524823408659 

你也可以使用sprintf来获得精确的小数点数:

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