执行此行时,我收到此错误,“字符串无法强制转换为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
答案 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 )