2017-10-05 184 views
2
  • 我提出的單元格A1等於1.39139
  • 製造電池B1等於1.40596
  • 製造小區C1的公式=(A1-B1)*10000
  • 由值
  • 複製小區C1和粘貼成細胞D1
  • 在單元格E1中,我手動編寫了計算的實際結果,即-145.7(您可以嘗試使用計算器)。

enter image description here如何粘貼Excel公式正確

  • 在單元格F1我做了一個if語句比較E1的結果和F1:=IF(E1=D1,"equal","not equal")
  • 結果是 「不等於」。

enter image description here

**我想知道如何複製和粘貼一個公式,並確保其粘貼的結果將是完全一樣的。請記住,我不想使用=round()公式,因爲我需要針對許多數字的解決方案,並且我不能使用round()來處理具有不同位數的每個單元格。

+4

這可能是由於Excel使用的浮點精度。通常會導致像您所描述的問題。以下是有關該問題以及如何解決該問題的信息的幾個鏈接:[link](https://blogs.office.com/zh-CN/2008/04/10/understanding-floating-point-precision-aka-爲什麼 - 做得不錯,答應我看似錯了答案/),[鏈接](https://support.microsoft.com/en-us/help/78113/floating-point-arithmetic-may-give-不準確的結果在Excel中)和[鏈接](https://support.microsoft.com/en-us/help/214118/how-to-correct-rounding-errors-in-floating-point-arithmetic) 。 – tigeravatar

回答

0

正如已經指出的那樣,這是因爲Excel的浮點精度。

你是對的(1.39139-1.40596)*10000等於-145.7。不過,我嘗試在Excel中輸入以查看實際生成的內容,並找到以下內容。如果您在鍵盤上突出顯示單元格C1並按F9,您將看到Excel實際計算出的值爲-145.700000000002

我知道你說你不想使用ROUND,但除了完全避免浮點數(即只使用整數)外,我認爲ROUND是你唯一的選擇。

我建議您確定什麼是您的工作表中所需的小數位數後的最大位數,並根據需要將ROUND(<number>,<max digits>)合併到所有公式中。

即,而不是使用=(A1-B1)*10000,應鍵入=ROUND((A1-B1)*10000,5)(例如四捨五入到5位),這將返回的恰好-145.7的值。我希望這會有所幫助,或者如果沒有別的,我希望這至少能夠說明造成這種情況的原因。