十幾年了我才知道自己不會用計算器
在輸入數據準確的情況下,計算器的計算準確度是100% ,這一點想必用過計算器的人都不會否認。那我問你一個問題:10% + 10% 等於多少?一般人哪怕是小學生,估計都會脫口而出答案是20% ,或者是0.2 。不就是個簡單的10 + 10 的問題嘛?可是有人卻發現,這麼簡單的問題,計算器卻出了“ 錯”。
根據這個微博上的說法,幾乎所有的手機計算器,在計算10% + 10%這個問題時,都會得出0.11的答案,並普遍被認為是一個BUG 。
小發也用自己的手機試了試,發現還真是這樣。
iPhone 在測試後也是同樣的結果。
其實從iPhone 計算器的運算過程中我們就可以發現,問題的本質在於我們和計算器的運算邏輯不同。
由於iPhone 在輸入百分號後會直接顯示結果,我們可以看到第一個10% 按下後,系統顯示的結果是0.1 ,而第二個10% 則變成了0.01 。
也就是說計算器把第二個10% 認定為之前輸入的10% 的十分之一,結果就變成了1% ,10% + 1% 結果可不就是11% ,0.11 嘛。
會出現這樣的結果是有原因的。。。
一開始計算器上是沒有% 這個符號的,但是為了方便國外人用計算器計算一件東西的折扣或者稅率,而專門設計了% 這種運算方式。
給大家舉個栗子:原價10 塊的東西,今天有8.5% 的折扣,那麼就可以表達成10 – 8.5% = 9.15 ,這時候這個8.5% 會默認乘以前面輸入的數字。。
因此這種計算方法也就成為了全球標準的計算器運算邏輯,而這種計算器也叫做:百分計算器。
要是換成在中國,我們會直接說這東西打9.15 折,計算方式會變成10 X 0.915 = 9.15 ,所以國內大家並不熟悉這套百分計算器的邏輯。
結果是一樣的,但是解題思路不一樣罷了,誰叫計算器是外國人先發明的呢?國際標準只能按他們的來了。
所以說,10% + 10% = 0.11 嚴格來說並不是計算器的BUG 。
可是計算器終究是由人創造出來按照固定邏輯進行數值運算的設備,只要是人為編程,肯定是會存在BUG 的,那麼計算器出了BUG 會是什麼樣呢?
記得小時候,剛開學拿著計算器的我聽見一個坊間傳說:只要拿著你的計算器按照一定順序按下某些字符,就會出現非常神奇的事情。
這種行為被叫做“ 爆機”,在學生群體中非常流行。
我們都知道,一般情況下科學計算器如果輸入了一些常規的不符合計算規則的數據,它會顯示一個“ error ”來表示出錯。
這種情況下系統會提示操作者如何進行操作,屬於正常的錯誤範圍。
可“ 爆機”狀態不一樣,在這個狀態下,整個屏幕都會顯示亂碼,什麼都看不清楚,更不用說繼續操作了,一般只有重啟能解決問題。
甚至有的情況下,連開關鍵都會失效,只能通過摳電池強制重啟來解決。
如果把計算器的計算過程比作做菜,普通報錯只是相當於放錯調料味道不對,還是有補救機會的,“ 爆機”則像是你往炒鍋裡加入了鋁熱劑,打得炒鍋猝不及防。。。
其實“ 爆機”的原理就是輸入某些數據使得計算結果數據溢出,造成計算器的顯示錯誤。
如果學生們研究爆機只是為了炫耀鋁熱劑可以把炒鍋燒糊,那麼長大之後依然堅持研究爆機的人,他們的目標就是真的用鋁熱劑來出一本菜譜了。。。
我們都知道,現在市場上的科學計算器品類很多,每個品牌下又各自有許多型號,同樣的爆機方法不一定就能適用於每一台計算器。
有許多爆機愛好者專門聚在一起,組建了一個叫fx-es(ms) 的貼吧,從根本原理層面上研究計算器的爆機過程,並且匯總了各種計算器的爆機方法。
隨便打開其中一個目錄,你就會發現它的下方有非常詳細的各種錯誤、亂碼的方法以及實測。
與此同時還有許多貼吧的吧友也在分享著自己的爆機經驗,學術氛圍之濃厚,學術態度之嚴謹,不知道的人還以為自己來到了C 語言吧。
在研究爆機的過程中,他們接觸到了科學計算器的底層原理,於是便不再滿足於爆機,而是在計算器上做更有趣的事情—— 編程。
比如用計算器玩打桌球遊戲。
或者把它當做一個模擬器來玩《 精靈寶可夢紅》,還是彩色的!
有的人甚至可以用計算器進行輸入練習。
計算器在絕大多數人眼裡,都是一個非常可靠的計算工具,在小時候它能幫我們解開四則運算,幫我們解開一元二次方程,甚至能幫我們畫出函數圖像。
這簡直是數學之神的化身啊!
可隨著我們慢慢長大,我們發現這個“ 數學之神”也不是完美無缺,它也存在BUG ,甚至我們可以在了解其原理後操控它做其他事情。
人天生都有著求知探索的精神,而這些計算器BUG 被發現解決的過程,何嘗不是一種另類的樂趣呢?
“ 我已經忘了該怎麼按了。。。”