有人可以解释一下为什么在lua中运行:
return 256.65 * 1000000 + .000000005 - 256 * 1000000 gives 649999.99999997
而
return 255.65 * 1000000 + .000000005 - 255 * 1000000 and
return 268.65 * 1000000 + .000000005 - 268 * 1000000 give 650000.0 ?
据我所知,这似乎是严格针对十进制 65(似乎也是 15)以及 256 - 267 范围内的整数的问题。我知道这与使用浮点进行这些计算有关,但是我仍然很好奇这些值有什么特别之处
最佳答案
这些值的特殊之处在于 0.65 不是二进制小数(尽管它是十进制小数),因此无法精确地用 float 表示。
郑重声明,这并不是 Lua 特有的。同样的事情也会发生在 C 中。
关于Lua小数精度损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40553156/