回覆列表
  • 1 # lanfengz1

    原因:這是由於浮點運算造成的。(在微軟官方有詳細說明的)

    (0.65)10 = (0.101001100110011001100110011001100110011......)2(0.6) 10 = (0.10011001100110011001100110011001100110011......)2

    目前計算機上儲存浮點數值是按照IEEE(電氣和電子工程師協會)754浮點儲存格式標準來儲存的。IEEE單精度浮點格式共32位,包含三個構成欄位:23位小數f,8位偏置指數e,1位符號s。將這些欄位連續存放在一個32位字裡,並對其進行編碼。其中0:22位包含23位的小數f; 23:30位包含8位指數e;第31位包含符號s。也就是說上面將0.65及0.5轉換出的二進位制程式碼,我們只能儲存23位,即使資料型別為double,也只能儲存52位,這樣大家便能看出問題出現的原因了。

    擷取的二進位制程式碼已無法正確表示0.65及0.5,根據這個二進位制程式碼肯定無法正確得到結果0.05。

    在Excel進行計算時在計算機中是轉換成二進位制進算然後保留數值的,所以會出現誤差。

    方法一:

    將原公式利用round()函式將其保留固定的小數位。

    方法二:

    工具----選項----重新計算---勾選【以顯示精度為準】

  • 中秋節和大豐收的關聯?
  • 5個月寶寶吃香蕉泥可以嗎?