2009-12-22 41 views
0

http://pastie.org/752941C:分割雙由雙輸出LNF

當我劃分DY/DX它返回LNF。請告訴我這是什麼意思,以及如何找到dy/dx的實際結果。謝謝。

+2

實際結果可能是INF,爲什麼不呢?這是一個合法的數字。 – 2009-12-22 10:44:25

+0

如果它是一條垂直線,dy = 1(例如)和dx = 0,實際結果應該是什麼? – 2009-12-22 16:31:37

+0

這不是一個零除? 'dy = 1; dx = 0; DY/DX;' – 2010-06-06 14:39:25

回答

1

Inf = Infinity。你得到這個是因爲dx是0,因此你除以0.這可能是有效的 - 例如,一條垂直線。

在計算斜率之前檢查以確保dx具有所需的值。

5

當您除以零(或足夠小的數字)時,無法以浮點表示法表示結果。在這種情況下,你會得到一個無窮大(+ Inf或-Inf)。例如,如果您已經擁有可以用IEEE754雙打表示的最大數字,並將其除以0.1(即乘以10),您將獲得+ Inf。

IEEE754將一些位模式分配給特殊值,如+/-無窮大和NaN(不是數字)。

我很久以前就不再試圖在電腦上用線條表示(梯度,y-相交)對(因爲你可以用腦中的無窮計算,所以在紙上就可以)。通過簡單地將線條表示爲(x1,y1,x2,y2)4元組,您可以避免所有無窮無盡的麻煩 - 如果以這種方式表示線段,您會發現對所有漸變效果都很好的算法。

否則,在計算梯度時,您總是需要對導致溢出的近垂直線進行特殊處理。