字符串不能被强制转换为Float用于轨道上的ruby

时间:2014-02-27 00:56:11

标签: ruby-on-rails ruby string floating-point

执行此行时,我收到此错误,“字符串无法强制转换为Float”

mechanic_dictionary [:cost] =“%。2f”%labor_item.hourly_cost * inv_item.hours_worked

但是当我修改这一行:

mechanic_dictionary [:cost] =“%。2f”%1.0 * 1.0

然后程序正确显示 1.00

的值

当我使用 labor_items inv_items 对象时,是否有人知道错误发生的原因?

注意 - 我在轨道上使用ruby

2 个答案:

答案 0 :(得分:3)

在产品周围加上括号:

"%.2f" % (labor_item.hourly_cost.to_f * inv_item.hours_worked.to_f)

回想一下,ruby运算符* /%具有相同的优先级,并且具有从左到右的关联性。

这是有效的原因

"%.2f" % 1.0 * 1.0

是因为"1.00" * 1.0 == "1.00"。它首先评估"%.2f" % 1.0

答案 1 :(得分:1)

"%.2f" % ( labor_item.hourly_cost * inv_item.hours_worked )