2012-09-08 22 views
0

可能重複:
How to make a modulo operation in objective-c/cocoa touch?模在Objective-C雙打

誰能向我解釋爲什麼在這裏的 「myModValue」 的值是1.73472e-18 但是當x會是0.1或0.4它是正確的0? 有沒有更好的方法來獲得兩個雙打的模值?

double x = 0.3; 
double y = 0.1; 
double myModValue = fmod(x, y); 

感謝邁克爾

編輯: (與我的項目變量的值,所以不要)試圖硬編碼上面的代碼,結果是0.1 我不知道爲什麼...

+0

@Monolo沒有隻解釋瞭如何使用double值進行模運算。因此,我認爲fmod()是正確的函數,但是我得到了這個無法解釋的結果^^ – Michael

回答

1

由於舍入誤差,浮點數不準確,1.73472e-18的值在浮點數上基本上爲0。這就是爲什麼你不應該使用==比較浮點數。請參閱this answer

+0

對值進行編碼意味着計算由編譯器完成,並以某種方式進行舍入 - 結果爲零。 – Sulthan