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

Posted

技术标签:

【中文标题】lua和javascript之间的不同数字浮点数【英文标题】:Different number floating point number between lua and javascript 【发布时间】:2019-07-28 10:47:04 【问题描述】:

为什么在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】:

print 在每个参数上调用tostring

> print(20.462033216400002)
20.4620332164

所以,试试

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

只需 IEEE-754 加倍。

【讨论】:

以上是关于lua和javascript之间的不同数字浮点数的主要内容,如果未能解决你的问题,请参考以下文章

Lua和C++中的浮点数的比较

Lua和C++中的浮点数的比较

当数字在 0 和 1 之间时显示没有整数部分的浮点数

javascript类型系统——Number数字类型

在 JavaScript 中将两个 16 位数字组合并转换为一个 32 位数字(浮点数)

JavaScript 浮点数及运算精度调整总结