Forum Discussion
tr268132
Nov 01, 2024Copper Contributor
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
Sort By
- NikolinoDEGold Contributor
在 Excel 中,浮點運算會有些微的精度誤差,這可能導致 F87 和 P37 的結果不同。這種情況出現的原因通常是由於 Excel 對浮點數的儲存和計算方式,導致的「微小誤差」。
解決方法
- 使用 ROUND 來控制精度:為避免這種浮點誤差,可以在每一步運算中加入 ROUND 函數,確保計算過程中的數值精度,避免累積誤差。具體來說,可以在 B87 的計算中使用 ROUND 函數來控制小數位數。
- 重新定義 F87 的公式:您可以將公式調整為每一步都進行 ROUND,例如:
F87 = ROUND(ROUND(B87, 2) * ROUND(A87 - 0.8, 2), 0)
這樣可以避免因浮點運算帶來的累積誤差。
調整公式範例
如果您的 B87 是累加方式,可以將公式改成:
B87 = ROUND(B86 + 0.01, 2)
這樣可以確保 B87 的值在小數點後兩位穩定,避免誤差。
總結
通過使用 ROUND 函數控制精度,可以減少或消除這些浮點數誤差對最終計算結果的影響。