在Ruby中将字符串转换为十进制数

66

我需要使用十进制数。

在我的程序中,用户需要输入一个带有小数的数字以进行转换。

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

# ARGV[0] is: 44.33

size = ARGV[0]

puts size.to_i
# size is: 44
# :(
4个回答

103

调用to_i,你会得到一个整数。

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

获取更多字符串转换方法,请查看此处


8
如Tau-fan在https://dev59.com/b2kw5IYBdhLWcg3wV5MD#51494232的回答中所述,还有一个`to_d`方法。 - Yuki Inoue

15

如果您想要更准确的答案并避免像这样的错误 https://www.codecademy.com/en/forum_questions/50fe886f68fc44056f00626c,您可以将其转换为十进制数进行计算。

require 'bigdecimal'
require 'bigdecimal/util'

size = ARGV[0]
size = size.to_d

这将使打印的数字变为十进制,但如果您想再次将其作为浮点数,请再次使用 to_f。

size=size.to_f

puts size

9

1
NoMethodError(未定义方法“Decimal”的错误)...又是来自那些毁坏工作代码的连续“功能/改进”团队的“特色”。 - JosephK
4
这似乎对任何一个都不起作用。您可以使用 require 'bigdecimal'; BigDecimal.new('3.333') - bigtex777
是的,看起来Decimal()是某个我记不起来的特定Ruby版本中的一个方法。BigDecimal属于Ruby标准库。-> http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html 最好使用它。 - lucianosousa
BigDecimal.new('3.333') does not work, should be BigDecimal('3.333') - Denn

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接