我必須計算一些簡單的數學表達式,但是當我在一行中完成時,結果總是爲零。但是,正確的結果顯然不是零。其有趣的,但當我分開表達的部分,我得到了正確的答案。 後來,我將這個結果劃分,因此它不應該是0。C++數學表達式的錯誤結果
表達是這樣的:
(X-X1)/(X2-X1)
在這種情況下增量:0
double delta = (x - x1)/(x2 - x1);
但這樣delta delta將是正確的:
double top = x - x1;
double bottom = x2 - x1;
double delta = top/bottom;
你有什麼想法,這是怎麼發生的?
我認爲x,x1和x2是整數值,'x2-x1'大於'x-x1'? – 2013-03-21 14:47:28
可能有[在Linux內核入侵前我沒有學習C的問題](http://google.com/search?q=integer+division+c) – 2013-03-21 14:49:19
是的,它們是無符號long int和yes,x2 -x1是更大的。 – 2013-03-21 14:49:29