use*_*805 4 floating-point lua floating-accuracy
当我0.1 + 0.2在Lua 执行时,我0.3完全得到了.如果我在Ruby或Python中做同样的事情,我得到了0.30000000000000004.我理解浮点舍入错误,但为什么Lua中不会出现这个问题呢?Lua做的不同之处是什么?
0.1+0.2不0.3完全是.试试这段代码:
print((0.1+0.2)==0.3)
print(string.format("%.17g",0.1+0.2))
Run Code Online (Sandbox Code Playgroud)
我假设您正在使用print或io.write打印这些值.在这种情况下,Lua只是不打印所有数字.在内部,Lua使用全长的本机浮点表示.该技术的解释是,print和io.write使用的格式格式的数字LUA_NUMBER_FMT定义的luaconf.h,默认为"%.14g".
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |