lua和javascript之间的数字浮点数不同

时间:2019-03-06 17:15:11

标签: lua precision floating-accuracy

为什么在lua中以下计算是

Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio
> print(6.4620332164+14)
20.4620332164

使用JavaScript

console.log(6.4620332164+14)
VM208:1 20.462033216400002

或python其

Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) 
[GCC 7.2.0] on linux
>>> print(6.4620332164+14)
20.462033216400002

假设它们都是双精度IEE 754,那么lua浮点数实现的特殊之处是什么?

1 个答案:

答案 0 :(得分:4)

print在每个参数上调用tostring

> print(20.462033216400002)
20.4620332164

所以,尝试

> print(string.format("%2.15f", 20.462033216400002))
20.462033216400002

IEEE-754只需加倍。