1

我在这里问这个问题是因为我相信这更像是一个程序问题而不是其他任何事情。

我正在使用 TI-84 Plus Sliver Edition 计算器,其中包含可以测试小于、大于和相等的逻辑运算符。我发现当我输入表达式时:

2^34 == 2^34 - 1

它给了我一个令人惊讶的 1。值得一提的是,我的计算器无法精确输出 2^34 的结果。相反,它使用指数符号和任何其他大于 33 的幂。这是布尔输出中的潜在因素吗?

此外,只有当第二个表达式减去 1 到 9 时,相等性测试才会返回 true。当数字 >= 10 时,它会正确返回 false。

会不会是舍入误差?为什么这个表达式返回真?

4

1 回答 1

5

您的计算器无法跟踪这么大的数字。

每个计算器都有一定的精度(比如说 10 位)。计算器给出的每个答案都会四舍五入,以便答案有那么多位数,然后它会根据需要移动小数位,以使数字变大或变小(在您的情况下非常大)。

您的数字非常大,以至于当您减去 1 时,会导致第 10 位之后发生变化。然后将其四舍五入回到您开始的位置,然后进行比较。所以很自然地,它认为它们是相同的数字(达到它能够做到的精度)。

于 2013-03-13T23:48:51.443 回答