Различные числа с плавающей запятой между lua и javascript - PullRequest
1 голос
/ 06 марта 2019

Почему в 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

Что особенного в плавающем luaРеализация числа точек здесь при условии, что они все с двойной точностью IEE 754?

1 Ответ

4 голосов
/ 06 марта 2019

print вызывает tostring для каждого аргумента.

> print(20.462033216400002)
20.4620332164

Итак, попробуйте

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

Просто IEEE-754 удваивается.

...