Forum Discussion

tr268132's avatar
tr268132
Copper Contributor
Nov 01, 2024

Excel worksheet 的計算錯誤

A1=30.8,A2=A1;B2=33.3,B3=B2+0.01;F2=ROUND(B2*(A2-0.8),0)

B87=B86+0.01=34.15,A87=A86=30.8,F87的公式=ROUND(B87*(A87-0.8),0),工作表計算結果F87=1024

K1=30.8,K2=K1;L2=33.3,L3=L2+0.01;P2=ROUND(L2*(K2-0.8),0)

B87=B86+0.01=34.15,A87=A86=30.8,P37的公式=ROUND(L37*(K37-0.8),0),工作表計算結果P37=1025

依上列公式ROUND(B87*(A87-0.8),0)為(34.15*(30.8-0.8))=1024.5,四捨五入1025,F87的結果是錯的,P37是對的,請問這種錯誤(F87)要怎麼修正?

感謝

1 Reply

  • NikolinoDE's avatar
    NikolinoDE
    Gold Contributor

    tr268132 

    在 Excel 中,浮點運算會有些微的精度誤差,這可能導致 F87 和 P37 的結果不同。這種情況出現的原因通常是由於 Excel 對浮點數的儲存和計算方式,導致的「微小誤差」。

    解決方法

    1. 使用 ROUND 來控制精度:為避免這種浮點誤差,可以在每一步運算中加入 ROUND 函數,確保計算過程中的數值精度,避免累積誤差。具體來說,可以在 B87 的計算中使用 ROUND 函數來控制小數位數。
    2. 重新定義 F87 的公式:您可以將公式調整為每一步都進行 ROUND,例如:

    F87 = ROUND(ROUND(B87, 2) * ROUND(A87 - 0.8, 2), 0)

    這樣可以避免因浮點運算帶來的累積誤差。

    調整公式範例

    如果您的 B87 是累加方式,可以將公式改成:

    B87 = ROUND(B86 + 0.01, 2)

    這樣可以確保 B87 的值在小數點後兩位穩定,避免誤差。

    總結

    通過使用 ROUND 函數控制精度,可以減少或消除這些浮點數誤差對最終計算結果的影響。

     

Resources