Ruby:将字符串转换为浮点数

4
我有三个字符串变量需要相加。 a =“5.21”,b =“5.22”和c =“5.23”。 当我尝试相加时,我得到一个字符串,我需要数值。
我已经尝试了以下方法:
a = a.to_f => 5.2
b = b.to_f => 5.2
c = c.to_f => 5.2
sum = a + b + c => 15.6

我该如何获得输出结果 15.66。请帮忙。


你确定你的 abc 参数都没有设置为 "5.2" 吗?看起来 #to_f 方法应该返回不同的值。也许这些值被你没有注意到的某行代码改变了...? - Myst
我怀疑你的字符串中有一个或多个不可见字符。尝试使用以下代码并报告结果:.each_char { |c| puts c.ord }。变量 abc 的值来自哪里? - Cary Swoveland
1个回答

10

尝试利用Ruby内置的Enumerable方法。尝试这样做:

a = "5.21"
b = "5.22"
c = "5.23"

[a, b, c].map(&:to_f).inject(:+)
#=> 15.66

我正在使用2.0.0版本,并且使用上述解决方案得到了15.6。 - napsterdsilva
你确定没有其他代码修改这些变量吗?此外,它们的值是否与你提供的字符串相同?如果字符串中有其他非数字字符,则可能会产生意外行为。请参见http://ruby-doc.org/core-2.2.0/String.html#method-i-to_f - garythegoat
我正在从一个安卓应用程序中读取这个值。 一旦我从应用程序中读取了该值,为确保它是一个字符串,我调用 a = a.to_s.strip 方法。然后 a = a.to_f。尽管在这种情况下字符串是 5.00,但仍然返回 5.0。 - napsterdsilva
尝试在每个步骤中打印a,包括在数字上调用to_s.strip之前。如果在某个时候您开始看到a仅带有一位小数,那么您就知道先前的操作将其截断了。让我知道发生了什么。 - garythegoat

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