Расчет значений в Lua с большей точностью - PullRequest
2 голосов
/ 23 апреля 2020

Выражение print(math.pi) дает значения pi как 3.1415926535898 до 13 десятичных знаков на моем процессоре с lua 5.3. Можно ли получить значение с большим количеством знаков после запятой, например, значение от math.pi до 50 знаков после запятой. Если это так, какой будет максимальный предел, до которого он может быть рассчитан в lua?

Ответы [ 2 ]

2 голосов
/ 23 апреля 2020

Lua использует двойную точность с плавающей точкой; мантисса имеет 52 бита, поэтому число ограничено до 16 десятичных знаков.

Если вам нужна большая точность, используйте библиотеку с множественной точностью, например, lqd , которая использует квадро-двойную точность с 212 бит мантиссы и дает около 64 десятичных знаков. Тогда qd.pi дает 3.1415926535897932384626433832795028841971693993751058209749445923.

2 голосов
/ 23 апреля 2020
print(string.format("%0.50f", math.pi))

отпечатки 3.14159265358979311599796346854418516159057617187500

С https://www.lua.org/source/5.3/lmathlib.c.html

#define PI      (l_mathop(3.141592653589793238462643383279502884))

Почему оба числа отличаются, я не знаю. Но если вы хотите печатать с большей точностью, чем print или tonumber соответственно, вам нужно отформатировать число самостоятельно.

...