Excel 會透過 ROUND、ROUNDUP、ROUNDDOWN、MROUND、INT 和 TRUNC 等函數來對數字進行四捨五入,每個函數都遵循您在公式層級選擇的特定進位規則與方向。最常用的公式是 =ROUND(number, num_digits),其中 num_digits 決定精度:正值計算小數位數、零代表四捨五入到最接近的整數、負值則代表四捨五入到小數點左邊(十位、百位、千位)。例如,=ROUND(2.5, 0) 會回傳 3,因為 Excel 使用「遠離零」進位規則,而 =ROUND(-2.5, 0) 同樣依此規則回傳 -3。ROUNDUP 與 ROUNDDOWN 不論被捨去的部分是否大於或小於一半,都會朝指定方向進位,所以 =ROUNDUP(-1.21, 0) 會回傳 -2,而 =ROUNDDOWN(-1.21, 0) 則回傳 -1。MROUND 會四捨五入到指定的步長(例如最接近的 0.05)、INT 會朝負無限大方向回傳整數的下限值,而 TRUNC 則直接捨去小數部分而不進行進位。在財務與量測工作表中,選錯函數通常是出現「差一錯誤」的常見原因。

how to calculate rounding in excel
在 Excel 中計算進位:函數、模式與情境

Excel 核心進位函數一覽

Excel 內建了一組小巧的進位函數家族。它們在三個方面有所不同:捨棄哪些位數、遇到剛好一半時如何處理,以及當被捨去的部分不為零時會朝哪個方向進位。下表整理了在零個小數位下,這些函數對常見的正值與負值輸入的處理結果。

函數行為=func(2.5, 0)=func(-2.5, 0)=func(-1.21, 0)
ROUND遠離零進位3-3-1
ROUNDUP永遠遠離零3-3-2
ROUNDDOWN永遠朝零方向2-2-1
MROUND進位到最接近的步長倍數3 (步長 1)-3 (步長 1)-1 (步長 1)
INT朝 −∞ 方向取下限2-3-2
TRUNC直接捨去小數位2-2-1

請注意 -1.21 欄位中 ROUNDDOWN 與 INT 之間的差異:ROUNDDOWN 回傳 -1,因為它永遠朝零方向;而 INT 則回傳 -2,因為它永遠朝負無限大方向。任何負值只要被捨去的部分不為零,TRUNC 與 INT 之間都會出現相同的分歧。當工作表必須符合某項公開規範時,「捨去位數」與「取下限」的差異通常就是決定答案的關鍵。

如何在 Excel 中對數字進行四捨五入

  1. 在某個儲存格中輸入來源數值,例如在 A1 儲存格輸入 123.4567。
  2. 點選您希望顯示進位結果的儲存格,然後輸入 =ROUND(A1, 2) 以進位到小數點後兩位,或者將 2 替換成您需要的任何小數位數。
  3. 使用 =ROUNDUP(A1, 2) 強制結果遠離零,或使用 =ROUNDDOWN(A1, 2) 強制結果朝零方向,無論被捨去的位數距離一半多麼接近。
  4. 使用負數的第二參數,可在十進位小數點左側進位:=ROUND(A1, -2) 會將 123.4567 進位到 100,而 =ROUND(A1, -1) 則會進位到 120。
  5. 若要以固定增量做現金式進位,請使用 =MROUND(A1, 0.05) 進位到最接近的五分錢;若需要朝某個步長取上限或下限,則可搭配 =CEILING(A1, 0.05) 或 =FLOOR(A1, 0.05)。
  6. 按下 Enter 確認,然後將公式向下複製到整欄。如果結果看起來不對,請再次確認您需要的是四捨五入、取上限、取下限還是直接截斷,因為 Excel 並不會標示公式採用了哪種模式。

1.005 難題:為什麼 Excel 結果有時會與自身矛盾

經典的 Excel 進位驚奇是 =ROUND(1.005, 2) 回傳 1.00,而不是預期的 1.01。這不是進位規則的問題,而是儲存格中實際儲存的值有問題。Excel 將數字儲存為 64 位元的二進位浮點數,而十進位字串 1.005 無法以二進位精確表示,所以該儲存格實際上存放的是類似 1.00499999999999989 的數值。等到 Excel 執行 ROUND 時,那個「一半」早已消失,因此函數正確地將那個較小的近似值向下進位。

同樣的陷阱也會發生在其他看似無害的數值上:=ROUND(0.145, 2) 可能回傳 0.14,而 =ROUND(2.675, 2) 可能回傳 2.67。每次都是因為所顯示的數字並非 Excel 實際進位的數字。常見的解決方法包括使用公式 =ROUND(A1 + 1E-10, 2) 將數值稍微推到剛好超過一半的位置,或改為對文字形式套用 ROUND:=ROUND(VALUE(TEXT(A1,"0.00")), 2)。這些方法都無法保證在每個輸入下都有效,因此當答案需要通過稽核時,養成對原始十進位數值獨立驗算的習慣才是更安全的做法。

五種進位模式與您實際需要哪一種

Excel 透過內建函數提供了「最接近」、「遠離零」、「朝零」和「取下限」等行為,但它並未將它們命名,也不會將各自的進位規則集中記載在一處。在 Excel 之外,同一個十進位數值依讀取它的軟體規範,可能會以五種不同的方式進位。下表列出了這些模式及其行為,採用 Unicode 聯盟 和 ICU 程式庫 所發布的定義,將被捨去的位數視為文字而非二進位近似值。

模式方向進位規則1.235 → 2 位數-1.235 → 2 位數-1.21 → 0 位數
Half up最接近遠離零1.24-1.24-1
Half even (banker's)最接近最後保留的位數為偶數1.24-1.24-1
Floor朝 −∞不適用1.23-1.24-2
Ceiling朝 +∞不適用1.24-1.23-1
Truncate朝零不適用1.23-1.23-1

Half even 常被稱為「銀行家進位法」,因為當大量獨立進位的「一半」情境加總時,它能消除 half up 帶來的持續性向上偏差。例如,使用 half up 時,輸入 2.5、3.5 和 4.5 會進位為 3、4 和 5;把這些進位後的值相加得到 3 + 4 + 5 = 12。使用 half even 時,同樣的輸入會進位為 2、4 和 4;相加後得到 2 + 4 + 4 = 10,整體少了半個級距。Excel 的 ROUND 行為接近 half up 而非 half even,因此需要 half even 的工作表必須自行加入自訂公式或呼叫外部函式。當財務、稅務或報表的規則明訂「進位到偶數」或「進位遠離零」時,每個剛好一半的輸入都會因此改變答案,而且 Excel 並沒有任何函式能從公式列中讀取這條規則。

將 Excel 結果與精確計算機相互比對

一旦知道工作表應採用哪種模式,您可以將原始十進位數值丟入能直接對數字字串執行進位的工具,以驗證任何已進位的儲存格。進位計算機 可接受帶正負號的十進位數字、讓您選擇零到二十個小數位,並提供上表所述的全部五種模式。由於它直接以文字方式檢視被捨去的位數,而非先將數值轉換為二進位浮點數,因此在 Excel 經常不一致的情境下,它能與明文規則保持一致。

舉例來說,輸入 1.235、進位到兩位小數。截斷前的保留部分為 1.23;被捨去的位數為 5,屬於剛好一半的情境。選擇 half up 時,計算機檢查到這個情境便將最後保留的位數進位,得到 1.24。切換為 half even 時,由於 4 已經是偶數,結果同樣為 1.24。切換為 floor 會得到 1.23,ceiling 會得到 1.24,而 truncate 則會得到 1.23。將同一輸入套用至 -1.235,可看出各模式在負值上的分歧:half up 與 half even 回傳 -1.24,ceiling 回傳 -1.23,floor 回傳 -1.24,truncate 回傳 -1.23。Unicode 與 ICU 發布的進位模式定義在這些方向上完全一致,因此計算機的行為符合經過稽核的試算表政策所期待的結果。

試算表的進位最佳實務

有三個習慣能在爭議發生前先行防範。首先,在中間運算階段請保留全精度,僅在您方法所要求的最終步驟才進行進位;每列都對累計總額進位一次,會使其與最終一次進位的答案產生更大的偏差。其次,請將十進位數值原樣貼進計算機,不要加上千分位分隔符號或科學記號,這樣工具看到的位數才會是您預期的位數;輸入框刻意拒絕接受逗號與指數符號,否則像 1,000.5 或 1e3 這類輸入會被悄悄重新解讀。第三,當工作表與其他應用程式結果不一致時,請分別檢查雙方在進位模式與輸入表示方式上的差異:不同的儲存值、不同的進位規則,或不同階段的進位動作,各自都可能解釋一個單位的差距,唯有進行精確比對才能找出真正的原因。

如果結果需要顯示尾端零以傳達精度(讓 1000.00 看起來與 1000 不同),請在進位後使用像 0.00 這類的數值格式設定儲存格,或使用計算機的輸出,它會原樣保留您所要求的精度。Excel 的顯示格式只改變外觀;底層的儲存格仍保留 ROUND 所產生的數值。在對外報表的場景中,這項差異正是「能通過稽核的數字」與「無法通過精度檢查的數字」之間的差別。

延伸閱讀:如何在 Excel 中更快速地將時間轉換為十進位。

延伸閱讀:在 Excel 工作表中計算時間長度。