許多 Excel 使用者誤以為「設定儲存格格式為小數點後兩位」就是四捨五入,實則不然。格式設定僅改變顯示,儲存格底層數值保持原樣,導致 SUM 等計算函數使用完整精度運算,產生財務報表「分攤不平」、「對不上」的經典問題。本文深度解析差異並提供標準解決方案。

| 原始值 (A欄) | 格式設定 2 位 (B欄) | ROUND 函數 (C欄) |
|---|---|---|
| 0.124 | 0.12 | 0.12 |
| 0.125 | 0.13 | 0.13 |
| 0.126 | 0.13 | 0.13 |
| 0.134 | 0.13 | 0.13 |
| 0.135 | 0.14 | 0.14 |
結論:B 欄僅隱藏小數位,計算時仍用原始值;C 次透過 ROUND 函數實際修改數值精度。
ROUND(number, num_digits)

| num_digits 值 | 結果 | 範例 |
|---|---|---|
| > 0 | 保留指定位數小數 | ROUND(3.14159, 2) = 3.14 |
| = 0 | 四捨五入至整數 | ROUND(3.14159, 0) = 3 |
| < 0 | 四捨五入至小數點左側(十位、百位...) | ROUND(1234.56, -2) = 1200 |

=ROUND(A2, 2) // 將 A2 四捨五入至小數點後兩位
// 錯誤:先算再圓,內部仍保留高精度
=ROUND(A2*B2, 2) + ROUND(C2*D2, 2)
// 正確:每筆明細都四捨五入再加總
=SUM(ROUND(A2:A10*B2:B10, 2)) // Excel 365 動態陣列
=SUMPRODUCT(ROUND(A2:A10*B2:B10, 2)) // 相容舊版
// 財務常用:稅額計算
=ROUND(小計 * 稅率, 2)
| 函數 | 行為 | 範例結果 |
|---|---|---|
| ROUNDUP(數值, 位數) | 無條件進位 | ROUNDUP(3.141, 2) = 3.15 |
| ROUNDDOWN(數值, 位數) | 無條件捨去 | ROUNDDOWN(3.149, 2) = 3.14 |
| MROUND(數值, 基數) | 四捨五入至指定倍數 | MROUND(17, 5) = 15, MROUND(18, 5) = 20 |
| CEILING(數值, 基數) | 向上調整至倍數 | CEILING(17, 5) = 20 |
| FLOOR(數值, 基數) | 向下調整至倍數 | FLOOR(18, 5) = 15 |
100 元按 3:3:4 比例分攤 → 30, 30, 40 正常
100 元按 1:1:1 比例分攤 → 33.33, 33.33, 33.33 總和 99.99 ≠ 100
// 假設 A2:A4 為比例權重,B1 為總金額
B2 = ROUND(B1 * A2 / SUM($A$2:$A$4), 2)
B3 = ROUND(B1 * A3 / SUM($A$2:$A$4), 2)
B4 = B1 - B2 - B3 // 最後一筆用總額減去前面,保證總和精確
=LET(
weights, A2:A4,
total, B1,
rounded, ROUND(total * weights / SUM(weights), 2),
last, total - SUM(TAKE(rounded, , -1)),
VSTACK(TAKE(rounded, , -1), last)
)