2009-12-22 36 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元组,您可以避免所有无穷无尽的麻烦 - 如果以这种方式表示线段,您会发现对所有渐变效果都很好的算法。

否则,在计算梯度时,您总是需要对导致溢出的近垂直线进行特殊处理。