EXCEL中的IF用來倍數判斷問題

EXCEL中我在output 輸入下面這個運算式,為什麼當input填入0.88才可以正確(0)顯示出來,若input 填超過0.96或1.04或1.12(依此類推),都得不到正確的值(-0.08)!照理來說只要input 是0.08的倍數得到的值應該都要是0才對阿,我有哪裡寫錯嗎?

=IF((A2-(INT(A2/0.08)+1)*0.08) = -0.08, 0, (A2-(INT(A2/0.08)+1)*0.08))

EXCEL中的IF用來倍數判斷問題
2025-03-11 14:20 發佈
edison810602 wrote:
=IF((A1-(INT(A1/0.08)+1)*0.08) = -0.08, 0, (A1-(INT(A1/0.08)+1)*0.08))



A1 => A2
edison810602 wrote:
EXCEL中我在output...(恕刪)

你把儲存格格式小數點位數改成30就知道原因了!!
因為0.96經過你的公式由電腦加減乘除後不一定完全等於-0.08,可能是-0.08000000001000,所以你的等式不會成立,請加入四捨五入取小數的公式,或是改用Mod取餘數的方式MOD(A2, 0.08) 。


edison810602
edison810602 樓主

很感謝你的解惑,原來原因是這樣,但我的式子為什麼會讓它不等於-0.08,是我的條件式寫錯什麼了嗎?

2025-03-11 18:44
小小尉 wrote:
edison...(恕刪)

很感謝你的解惑,原來原因是這樣,但我的式子為什麼會讓它不等於-0.08,是我的條件式寫錯什麼了嗎?
你看一下 int函數 意思


https://zh-tw.extendoffice.com/excel/functions/excel-int-function.html
edison810602 wrote:
我的式子為什麼會讓它不等於-0.08,是我的條件式寫錯什麼了嗎?

原因是電腦浮點數格式限制,無法精確表示 0.08
細節請搜尋 浮點數 比較
edison810602 wrote:
很感謝你的解惑,原來原因是這樣,但我的式子為什麼會讓它不等於-0.08,是我的條件式寫錯什麼了嗎?


這是excel特有的問題

(我以前回答的其中一篇)
https://www.mobile01.com/topicdetail.php?f=511&t=5206762
(微軟的官方說明)
https://learn.microsoft.com/zh-tw/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result

也不能單純只用mod,有時答案是錯的
考慮到您的情況比較特別,我會改用這種方式寫
=IF(IFERROR(SEARCH(".",A2/B2),0)=0,0,MOD(A2,B2)-0.08)









更多請詳情 google excel 誤差 0.01
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?