4

当我0.1 + 0.2在 Lua 中执行时,我得到0.3了准确的结果。例如,如果我在 Ruby 或 Python 中做同样的事情,我会得到0.30000000000000004. 我了解浮点舍入错误,但为什么在 Lua 中不会出现此问题?Lua 有什么不同?

4

1 回答 1

8

0.1+0.20.3完全是。试试这个代码:

print((0.1+0.2)==0.3)
print(string.format("%.17g",0.1+0.2))

我假设您正在使用printio.write打印这些值。在这种情况下,Lua 只是没有打印所有数字。在内部,Lua 使用全长的本地浮点表示。技术解释是使用print中定义io.write的格式来格式化数字,默认情况下是.LUA_NUMBER_FMTluaconf.h"%.14g"

于 2013-08-01T21:49:39.160 回答