昨天,一道數學題讓手機計算機全線陣亡,計算“10%+10%”時,包括OPPO、華為、蘋果、小米在內的多款機型得出的結果都是0.11,而不是0.2,引發了大量討論。這其實是因為計算機對於輸入符號的理解不同。小米高管@MIUI小凡今天專門發了一篇長文來解釋運算原理,以及為什麽全球標準的計算邏輯要這樣設計。一起來看看他的解釋吧。
小米計算結果
以下為原文:
鑒於昨日計算機百分號引發了大型社會懸疑,10%+10%居然=0.11,這究竟是代碼的扭曲還是教育的淪喪,讓我替大家揭開真相。
看一些文章幾百字也沒把道理說太清楚。鑒於超強的歸納+化繁為簡的表達=聰明才智的體現,我嘗試用一句話說清運算原理:
以8+10%為例,為什麽=8.8而不是8.1?
一起讀: 8元錢,加上10%的小費,一共是8.8元。
——結束才藝展示的分隔線——
以上就是目前全球標準的計算邏輯,但還有一個大家疑惑的問題:為什麽計算邏輯要這麽設計?
於是這變成了一個歷史思考題。
最早的電子計算機並沒有%,是後來加的。作為後續改進,它一定解決了計算場景中的常用痛點,而絕不是腦殘。我推測很可能是西方人計算折扣、小費、利息等常見場景。
貨物560元,20% OFF(打八折)多少錢?
560-20%=448!
資方存入2800元,計年息6%,本息總計多少?
2800+6%=2968!
是不是一下子好用到爆。
But,為啥我前面加了一個“西方人的計算場景”呢?因為我覺得對於算力過剩的中國人,很少人會這麽思考和輸入。
貨物560,砍兩成就是560*0.8=448。
2800,6%年息,就是2800*1.06=2968。
就是這麽屌!直接省去了一步(國人這麽優秀我TM能怎麽辦)╯□╰
所以百分號鍵解決的痛點,中國人不太用的上,也不太會這麽思考(這也是為什麽今天才有人無聊去試10%+10%)。但對於西方很多同志來說,這玩意真是能救命呀[奧特曼]。
——結束考古思考的分隔線——
最後說一下MIUI怎麽想的。
其實之前我們改成過10%+10%=0.2,這也是為什麽有些用戶科學計算機=0.2,是殘留的老版本,但後來決定還是遵循全球統一標準。
因為中國人不太會去這麽用%(我們會直接輸入0.1而不是10%,自帶轉換),所以更改行為給國內用戶帶來的好處很小,而一些習慣了%用法的人卻會崩潰,綜合考慮還是擇優統一了用法。