【发布时间】:2023-01-21 02:05:08
【问题描述】:
我真的对 lua 中的数字实现感到困惑。
lua 网站上的文档非常清楚(https://www.lua.org/pil/2.3.html):
数字类型表示实数(双精度浮点数)。 Lua 没有整数类型,因为它不需要它。对于浮点运算错误存在一种普遍的误解,有些人担心即使是简单的增量也会对浮点数产生奇怪的影响。事实是,当您使用 double 表示整数时,根本没有舍入误差(除非该数字大于 100,000,000,000,000)。具体来说,一个 Lua 数字可以表示任何长整数而不会出现舍入问题。此外,大多数现代 CPU 执行浮点运算的速度与(甚至更快)整数运算一样快。
这是完全有道理的。 但是在这个最简单的例子中怎么会发生整数溢出呢?
$ lua
Lua 5.3.6 Copyright (C) 1994-2020 Lua.org, PUC-Rio
> 9223372036854775807 + 1
-9223372036854775808
【问题讨论】:
标签: lua