【发布时间】:2018-02-07 17:57:30
【问题描述】:
Lua 5.1 出现将许多完全有效的 64b 整数解释为
1,805,996,217,335,808,768
而最大的有符号有效 64b 整数是
9,223,372,036,854,775,807
这是一个不幸输出的例子:
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> return 1805996217335808768 == 1805996217335808804
true
> return 1805996217335808768 == 1805996217335808805
true
> return 1805996217335808768 == 1805996217335808806
true
> return 1805996217335808768 == 1805996217335808769
true
> return 1805996217335808768 == 1805996217335808767
true
人们会期望看到false,这里有true。
编辑(标记为重复):
这不是 this question 的重复,因为您无法编译 Lua 5.1 来处理 64b 整数。
【问题讨论】:
-
Lua 在 5.3 之前没有整数。这些是 64 位浮点数,如 JavaScript,只能明确表示最大为 2^53−1 的整数。
-
经典的“这不是错误,而是功能”。感谢您的回复!
-
嗯,它不是“功能”。这就是他们在 5.3 中修复它的原因。 =)