Lua的浮点处理与其他语言有何不同?

时间:2013-08-01 21:42:24

标签: floating-point lua floating-accuracy

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

1 个答案:

答案 0 :(得分:8)

0.1+0.2不完全是0.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"

相关问题