我遇到的问题是大于/小于比较不起作用。
以下是发生的事情:
我们说我有一个正方形,我得到了这个正方形在太空中的最小和最大点,例如。 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
答案 0 :(得分:0)
浮点数学是不精确的,你需要一个“足够接近”的检查。例如,使用SizeYPt - SizeY&lt; = 1E-12