请教这里用Abs()为什么无效?
在下有个问题,想请达人指教!For j = 1 To NHaulm
If HaulmArray(j, 1, 4) * 6 = HaulmArray(j, 1, 5) Then
Picture1.Line (HaulmArray(j, 1, 1), HaulmArray(j, 1, 3))-(HaulmArray(j, 2, 1), HaulmArray(j, 2, 3)), &HFF ' &HFF00 '&HFF0000
Else
Picture1.Line (HaulmArray(j, 1, 1), HaulmArray(j, 1, 3))-(HaulmArray(j, 2, 1), HaulmArray(j, 2, 3)), &HFF00 '&HFFFFFF
End If
Next j
在这里,我使用Abs(HaulmArray(j, 1, 4) * 6 - HaulmArray(j, 1, 5)<1E-5)反倒没有用,这是为什么呢?谢谢您的回答!
--------------------编程问答-------------------- 应该是
Abs(HaulmArray(j, 1, 4) * 6 - HaulmArray(j, 1, 5)) <1E-5 --------------------编程问答-------------------- 在这里,我使用Abs(HaulmArray(j, 1, 4) * 6 - HaulmArray(j, 1, 5) )<1E-5反倒没有用,这是为什么呢?谢谢您的回答!
不好意思,上面的写错了。问题不变。 --------------------编程问答-------------------- 没有用可能你的数据刚好都是 结果是 false
你haulmarry怎么定义的
或者可以在for 循环下面加这句 检查下
For j = 1 To NHaulm--------------------编程问答-------------------- HaulmArray数据应该是单精度或双精度浮点型吧。1楼说的条件没错。只是你要求的条件太高,达不到,先试试1E-2,或1E-3。 --------------------编程问答-------------------- ReDim HaulmArray(50000, Trail, NParameter) --------------------编程问答-------------------- 4 楼的分析是对的。我将ReDim HaulmArray(50000, Trail, NParameter)改写为ReDim HaulmArray(50000, Trail, NParameter) As double,一切都OK了。不过,我想知道ReDim HaulmArray(50000, Trail, NParameter)情况下HaulmArray会自动成何种类型的数?谢谢大家! --------------------编程问答-------------------- Variant,变体类型,16字节,比double型(8字节)还长呢。
debug.print abs(HaulmArray(j,1,4)-HaulmArray(j,1,5))
...
下面的不变
补充:VB , 基础类