Lua浮点数误差

我对Lua还比较新,但我读过它没有整数,所以所有的数字都是浮点数。 我注意到我的日志中有一些数字被加上了一点不精确的差距。例如0.14被写成0.14000000059605。 在那个函数中,如果数字有一点差别,也没关系,因为它是与一个随机数进行比较的。但是我会做很多与数字相等的比较,例如NumReg() == 2,如果2被舍入,则会给出错误的结果。 我需要将它们向下舍入,还是非微小数字不受影响?

原文链接 https://stackoverflow.com/questions/71028351

点赞
stackoverflow用户11740758
stackoverflow用户11740758

你可以根据需要格式化一个浮点数。

在交互式 Lua 控制台中进行实验的示例...

> _VERSION
Lua 5.4
tonumber(string.format('%.3f', 0.14000000059605))
0.14
> print(tonumber(string.format('%.3f', 0.14000000059605)))
0.14
> type(tonumber(string.format('%.3f', 0.14000000059605)))
number
> math.type(tonumber(string.format('%.3f', 0.14000000059605)))
float
> tonumber(string.format('%.3f', 0.14000000059605)) == 0.140
true
2022-02-09 18:13:03