gpt4 book ai didi

lua - 为什么 lua 5.1 会错误地解释某些整数?

转载 作者:行者123 更新时间:2023-12-04 16:12:05 24 4
gpt4 key购买 nike

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.1 使用精度为 53 位的 double 类型。

只有数字的前 53 位将存储在双小数部分中。
最大有效整数为 9007199254740991。如果数字大于 9007199254740991,则直到 53 位的最后位将被清零。

54位数字:

18014398509481983 = 111111111111111111111111111111111111111111111111111111b

在内部将存储为
18014398509481982 = 111111111111111111111111111111111111111111111111111110b

因为只使用了前 53 位,所以两者是相等的。

关于lua - 为什么 lua 5.1 会错误地解释某些整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48670426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com