对于不同的语言,标题本身只有many answers,但我有一种奇怪的行为。我在rails控制台中得到了正确的数字,但Rails却没有。
控制台:
a = -42.57
b = -43.47
a - b = 0.8999999999999986
滑轨'答案是1.0
。这个轻微的错误对我的应用程序产生了巨大的影响。
answer = (a-b)
answer < 1 ? 'do something' : 'do other thing'
我需要精确的计算。为什么在Rails控制器中不是这样但在控制台中是正确的?没有涉及数据库,只是方法中的基本数学。
控制器
def step_3
a = 112.53 - 155
b = 112.53 - 156
a - b
end
答案 0 :(得分:3)
这不是Rails问题。您使用的是不合适的数据类型。
如果您需要精确的结果,可以这样做:
require 'bigdecimal'
a=BigDecimal.new('-42.57')
b=BigDecimal.new('43.47')
c=a-b
puts(c.to_s('F')) # prints -86.04