vb双精度除法问题,急急急!

Dim a1, a2, b1, b2, c1, c2, d1, d2, k1, k2 As Double
Private Sub Command1_Click()
a1 = 7.3
a2 = 5.3
b1 = 80
b2 = 40
k1 = (a1 - a2) / (b1 - b2)
c1 = 8.8
c2 =6.8
d1 = 90
d2 = 50
k2 = (c1 - c2) / (d1 - d2)
Text2 = k1
Text3 = k2
If k1 = k2 Then
Text1 = "1"
Else
Text1 = "2"
End If
End Sub
得到的结果是text1="2"不相等,但text2=k1,text3=k2都得到的是0.05应该相等啊!如果换一下数c1=7.2,c2=5.2,d1=100,d2=60就是text1="1"
回答满意会追加分的!
不知道是为什么,改成你那样也得到的是2.但我改成if val(k1)=val(k2)就得到1了。不过仍然感谢你的回答!分给你吧

定义的问题。举例如下:

dim i,j as integer
本意想i,j都是整数型,实际上只有j是整数型,i为变体型。
应该写成:
dim i as integer,j as integer

所以你的问题就清楚了 ,你应该对每个变量都定义成 As Double ,结果就正确了。

Dim a1 As Double, a2 As Double, b1 As Double, b2 As Double, c1 As Double, c2 As Double, d1 As Double, d2 As Double, k1 As Double, k2 As Double

VB在执行 (a1 - a2) / (b1 - b2) 类似运算时,如果有一个变量是变量型,那么整个表达式的精度都会降低,所以建议进行数学运算时,一定要申明明确的数字类型,避免使用变体型。

我把你的代码整个复制到我的电脑运行过了,只要你把定义改成和我一样的,就没问题了.
肯定没错的了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-20
不明白为什么,但是你上面的声明是:a1, a2, b1, b2, c1, c2, d1, d2, k1都是变体类型,只有k2是双精度型的。
你写成这样试试吧:Dim a1, a2, b1, b2, c1 As Integer, c2 As Integer, d1, d2, k1 As Double, k2 As Double
_________________
确实都改成双精度也不行,应该是精度的问题,改成整型就行了。
第2个回答  2009-05-19
试下对除完后的值做下取小树处理呢
相似回答