2013-03-13 57 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位數字後的變化。然後再回到你開始的事情,然後進行比較。所以自然而然地,它認爲它們是相同的數字(達到它所能達到的精度)。

相關問題