2013-03-13 42 views
1

我在这里问这个问题,因为我相信这是一个比其他任何问题更多的程序问题。为什么我的计算器在2^34 == 2^34 - 1时返回true?

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

2^34 == 2^34 - 1 

它给了我一个惊人的真实。值得一提的是,我的计算器无法精确输出2^34的结果。相反,它使用指数表示法以及任何其他大于33的功率。这是布尔输出中的潜在因素吗?

此外,如果第二个表达式减1到9,则等于测试只返回true。当数字大于等于10时,它会正确返回false。

它可能是一个舍入误差?为什么这个表达式返回true?

+5

其舍入误差... – 2013-03-13 23:16:18

+0

不要TI-84只有8位精度? – Blender 2013-03-13 23:17:21

+0

雅1.99999999999 <---其中11个,基本相当于2个。我只想扔掉计算器。 – 2013-03-13 23:26:13

回答

5

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

每个计算器都有一组精度(可以说是10位数字)。计算器给出的每个答案都是四舍五入的,以便答案有很多数字,然后按照需要将小数点位移,以便使数字变大或变小(在您的情况下,这个数字非常大)。

您的号码非常大,当您减去1时,会导致第10位数字后的变化。然后再回到你开始的事情,然后进行比较。所以自然而然地,它认为它们是相同的数字(达到它所能达到的精度)。

相关问题