.NET大于/小于不工作

时间:2015-03-18 15:08:35

标签: vb.net

我遇到的问题是大于/小于比较不起作用。

以下是发生的事情:

我们说我有一个正方形,我得到了这个正方形在太空中的最小和最大点,例如。 minPoint =(0,0,0)和maxPoint =(1,1,1)

我在这张脸上放置文字,但我需要将文字放在方形面内,如果不是,那么我会缩小尺寸,直到它适合。

在正确获取minPt到maxPt的距离以及minPt到文本位置之后,这是我的代码。

以下是我的代码行无效:

如果sizeYPt< = sizeY且sizeXPt< = sizeX则退出Do

它适用于大多数情况,但我遇到过无法工作的情况。我注意到的一件事是sizeYPt与sizeY相同,而sizeXPt小于sizeX(应该都是真的!!! argh)

任何人都知道问题是什么?这是我的完整代码:

Dim sizeY, sizeX, sizeYPt, sizeXPt As Double
Dim yVect, xVect As New VISIVector

yVect.Put(0, 1, 0)
xVect.Put(1, 0, 0)

sizeY = Util.dist2pts_alongAxis(centerPoint, p2, yVect)
sizeYPt = Util.dist2pts_alongAxis(centerPoint, txtPt, yVect)
sizeX = Util.dist2pts_alongAxis(p1, p2, xVect)
sizeXPt = Util.dist2pts_alongAxis(p1, txtPt, xVect)

If sizeY.ToString.Contains("-") Then sizeY = sizeY * -1
If sizeYPt.ToString.Contains("-") Then sizeYPt = sizeYPt * -1
If sizeX.ToString.Contains("-") Then sizeX = sizeX * -1
If sizeXPt.ToString.Contains("-") Then sizeXPt = sizeXPt * -1

MsgBox(sizeYPt & " | " & sizeY & vbNewLine & sizeXPt & " | " & sizeX)

If sizeYPt <= sizeY And sizeXPt <= sizeX Then Exit Do

1 个答案:

答案 0 :(得分:0)

浮点数学是不精确的,你需要一个“足够接近”的检查。例如,使用SizeYPt - SizeY&lt; = 1E-12