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))
edison810602 wrote:EXCEL中我在output...(恕刪) 你把儲存格格式小數點位數改成30就知道原因了!!因為0.96經過你的公式由電腦加減乘除後不一定完全等於-0.08,可能是-0.08000000001000,所以你的等式不會成立,請加入四捨五入取小數的公式,或是改用Mod取餘數的方式MOD(A2, 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