Lua math.floor返回错误的值

时间:2018-03-01 11:46:49

标签: lua floating-point precision

。我的代码是:

for k,v in pairs(result) do
  result[k] = math.floor(v*1000)/1000
  if k == 215 then
     print(v, math.floor(v*1000))
  end
end
for k,v in pairs(extra) do
  extra[k] = math.floor(v*1000)/1000
end

哪里

result[215] = 113

但是当我用C ++ Lua-Tinker运行它时,我得到了打印:

113, 112999

这很令人困惑!

1 个答案:

答案 0 :(得分:0)

感谢Egor Skriptunoff,我得到了答案。 有一个例子:

diff

结果是:

local num1 = 100 + 1300/100
print(num1, math.floor(num1))

local num2 = (1 + 13/100) * 100
print(num2, math.floor(num2))

实际上,num2 = 112.9999999999999 ...,因为113 113 113 112 。但是当使用'print'来显示它时,会有一个圆形动作:

13/100

结果是:

local a=112.99999999999 --(the count of 9 is 11)
print(a)
local b=112.999999999999 --(the count of 9 is 12)
print(b)