当我在Lua中执行0.1 0.2时,我得到0.3.如果我在 Ruby或 Python中做同样的事情,我得到0.30000000000000004.我理解浮点舍入错误,但为什么Lua中不会出现这个问题呢? Lua做的不同之处是什么? 0.1 0.
print((0.1+0.2)==0.3) print(string.format("%.17g",0.1+0.2))
我假设您使用print或io.write来打印这些值.在这种情况下,Lua只是不打印所有数字.在内部,Lua使用全长的本机浮点表示.技术说明是使用luaconf.h中定义的LUA_NUMBER_FMT格式的print和io.write格式编号,默认情况下为“%.14g”.