Lua小数精度损失

标签 lua precision

有人可以解释一下为什么在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/

相关文章:

linux - lua-nginx 必须以 root 身份运行

c++ - 如何在 Lua 中手动销毁包装的 C++ 类

string - 如何从随机位置的字符串部分获取不确定的数值?

regex - 降低数字的精度 - 正则表达式 vim

algorithm - 精确高效绘图的技术和算法

r - terra 管理数字精度 : decimal raster values are modified when writing files

python - 将 float 限制为两位小数

lua - 纯Lua哈希方法

Lua:如何从数字列表中读取内容

sql-server - 为什么 Entity Framework 将参数作为 DECIMAL(5,0) 传递给使用 NUMERIC(19) 定义的列?