Excel為什麼編輯欄顯示數字,單元格顯示科學計數法?


謝謝 @dominee dominee 邀請

一、是什麼?

在Excel在常規格式下,數字超過11位(12位起)就會自動以科學計數法顯示,實際上單元格中的值還是編輯欄顯示的值,你也可按Ctrl+~顯示公式,這樣也可以看到單元格中真正的值。

如果數字超過15位(16位)起,就會自動將15位以後的數字以0顯示,

這也常使得Excel初級用戶在輸入18位身份證號碼時,看到身份證後3位自動變為0時,會感到大惑不解。

二、怎麼辦?

  1. 如果數字需參與計算
  • 可以將單元格設置為數值,然後將小數位位數設置為0

  • 可以使用自定義格式#,或0,

  • 如果還有小數位,那根據需要設置小數位#.00

2. 如果不需要參與計算

  • 可以使用分列功能或設置單元格格式+剪貼板將此列設為文本格式。

三、為什麼?

為什麼超過11位就會自動以科學計數法顯示呢?具體原因不得而知,下面是我推測的原因,有請微軟 @Office 365 為我們確認一下。

我們知道,Excel是以浮點計數方法來存儲和計算數字的,因而會出現Excel有時候做不了簡單的算術數字的情況,比如在單元格輸入=42-41.7,計算結果居然不是0.3,而是0.299999999999997。聰明的Excel有時就是這麼笨!

那什麼是浮點計算呢?

由於計算機內存位數的限制,Excel可以存儲的最大數或最小數也是有限的。

但我們需要處理的數字可能是非常大,那如何才能在有限的內存位數情況下,盡量表達最大的數字呢?Excel的浮點數以二進位存儲,並分為三個部分,總長度為 65 位:符號、指數和尾數。

1 個符號位+11 位指數+1 個隱含位+52 位尾數

指數位數是11位,不知道數字超11位就自動以科學計數法顯示,是不是與這個有關,有請微軟 @Office 365 為我們確認一下。

本人的微信公眾號:Excel偷懶的技術

本公眾號堅持分享原創Excel文章,求實用、接地氣、不炫技

歡迎大家關注


推薦閱讀:

如何看待谷歌工程師透露谷歌有20億行代碼,相當於寫40遍Windows?
關於 Go 中的實用函數
C++的函數形參什麼時候應該使用右值引用?
鼎叔的編程慢習慣
鵬哥帶你學編程-引子

TAG:編程 | MicrosoftOffice | MicrosoftExcel | VBA |