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



我需要使用小数。在我的程序中,用户需要输入一个带小数的数字来转换该数字。

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

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

调用to_i,得到整数。

试着调用to_f,你应该得到一个float。

有关更多字符串转换方法,请查看此处。

如果您想通过计算得到更准确的答案,以避免出现这样的错误https://www.codecademy.com/en/forum_questions/50fe886f68fc44056f00626c可以使用转换为十进制示例:

require 'bigdecimal'
require 'bigdecimal/util'
size = ARGV[0]
size = size.to_d

这应该会使打印的数字变成十进制,但如果你想让它再次浮动,只需将其再次放入

size=size.to_f
puts size

您也可以使用十进制类进行

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

最新更新