Lua的浮点处理与其他语言有何独特之处?
- 内容介绍
- 文章标签
- 相关推荐
本文共计163个文字,预计阅读时间需要1分钟。
当我在Lua中执行0.1+0.2时,我得到0.3。如果我在Ruby或Python中做同样的事情,我得到0.30000000000000004。我理解浮点数舍入错误,但为什么Lua中不会出现这个问题呢?Lua做的不一样之处是什么?0.1+0.2
当我在Lua中执行0.1 0.2时,我得到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))
我假设您使用print或io.write来打印这些值.在这种情况下,Lua只是不打印所有数字.在内部,Lua使用全长的本机浮点表示.技术说明是使用luaconf.h中定义的LUA_NUMBER_FMT格式的print和io.write格式编号,默认情况下为“%.14g”.
本文共计163个文字,预计阅读时间需要1分钟。
当我在Lua中执行0.1+0.2时,我得到0.3。如果我在Ruby或Python中做同样的事情,我得到0.30000000000000004。我理解浮点数舍入错误,但为什么Lua中不会出现这个问题呢?Lua做的不一样之处是什么?0.1+0.2
当我在Lua中执行0.1 0.2时,我得到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))
我假设您使用print或io.write来打印这些值.在这种情况下,Lua只是不打印所有数字.在内部,Lua使用全长的本机浮点表示.技术说明是使用luaconf.h中定义的LUA_NUMBER_FMT格式的print和io.write格式编号,默认情况下为“%.14g”.

