作者:小芒童鞋
來源:芒種學院(ID:lazy_info)
近期經常有小夥伴提問,為什麼我的Excel在計算的時候這麼不準確,比如在計算50.7-50的時候,結果卻不等於0.7,這是為啥?
這樣的案例還有非常多,而且都是在不經意之間就產生了錯誤,卻又發現不了,主要有以下場景:
使用計算的結果做VLOOKUP匹配,結果為NA;
使用計算的結果用IF函數校對,結果為False;
為啥這麼強大的Excel,居然連一些簡單的加減法都計算不準確?這是什麼原因造成的?
這就要涉及到一個「二進位」相關的知識點了。
今天小芒就來跟大家分享下出現這種情況的原因,並且如何去避免解決它,快來一起學習吧~
大家哪怕不知道「二進位」是啥,也都應該聽過計算機只能識別0和1兩個數字,電腦上的所有數據。
注意是所有數據都是通過轉換成0和1讓電腦識別的。
無論是你看的電影、文檔、電子書、遊戲等等都是底層都是0和1的一大串數據,至於如何轉換成0和1這塊我們就不需要關心。
而小數數字的存儲會有一個比較混亂的問題,比如0.1在底層會被轉換成類似於001100110011...無限循環的二進位。
但是電腦空間是有限的,無限的內容是存儲不下的,那怎麼辦?
沒錯,就是砍一刀,比如只保存到小數點後15位,其他的我不存儲。
Excel就是這樣做的,這就是為什麼在Excel中一個小數減去或者除以另外一個數,前15位都是正確的。
現在知道為什麼會計算不精準了麼?注意這裡的「保存到小數點後15位」並不是你的實際的數字的15位。
而是將小數轉換為電腦可識別的二進位的時候,保留15位小數,所以並不是你的小數只有 2 位就不會出錯。
那麼像這種情況要如何解決了,小芒給大家整理了兩種解決技巧,分別適應於不同的場景。
第一種是在Excel中設置已顯示精度為準,也就是說,看到什麼,精度就是什麼。
通過點擊「文件」選項卡下的「高級」,勾選「將精度設置為所顯示的精度」。
這樣,你看到的小數是幾位,那麼就有幾位是精準的,但是有個非常嚴重的缺陷。
如果你的實際小數位數超過了顯示的位數,保存的時候,超過的數據會全部丟失。
並且將文件發送給別人的時候,錄入的數據超過部分會丟失,計算的部分仍然會出錯,因為電腦默認是不會設置這個操作的。
第二種做法是使用ROUND函數手動控制要保留的小數位數,這個就需要根據業務場景來搭配了。
比如財務一般小數點後3位就沒意義了,只需要保留到小數點後2位,這個時候可以將計算結果用ROUND函數包起來,只保留2位小數。
這個時候原始數據不會丟失,計算結果不會錯誤,並且發送給其他人的時候,數據也是正常的,非常推薦這種做法。
在什麼情況需要使用ROUND函數呢?當你的數據發生「加減乘除」,並且數據裡有一個「帶小數」的數值的時候。
或者兩個整數之間做除法運算的時候,如果要確保不出錯,就要使用ROUND函數,其他情況不需要。
你明白了麼?以上就是今天給大家分享的「Excel計算出錯」的解決技巧,如果對你有幫助,記得點讚打call哦~