Excel 为什么这个双值比较的结果不是真的?
我有以下单元格内数据/公式:Excel 为什么这个双值比较的结果不是真的?,excel,vba,double,Excel,Vba,Double,我有以下单元格内数据/公式: A1: 60 A2: 8000 A3: 4000 A4: =COS(A1*PI()/180)*A2/1000 我试图在我的项目中运行这个非常简单的代码片段: Dim x as Double, y as Double x = Sheet1.Range("A3") y = Sheet1.Range("A4") If (x / 1000) = y Then z = z + 0.0001 Debug.Print z End If 我希望这个比较结果是正
A1: 60
A2: 8000
A3: 4000
A4: =COS(A1*PI()/180)*A2/1000
我试图在我的项目中运行这个非常简单的代码片段:
Dim x as Double, y as Double
x = Sheet1.Range("A3")
y = Sheet1.Range("A4")
If (x / 1000) = y Then
z = z + 0.0001
Debug.Print z
End If
我希望这个比较结果是正确的。但是,它从不这样做,因此不会在z上执行我的操作。x和y都是类型Double
。“局部变量”窗口还告诉我这些值是4000和4,当我在设置x和y后使用Debug.Print
时,它告诉我相同的事情
我知道这似乎是一个非常容易的问题,但如果它能工作,我不会把它贴在这里。导致此逻辑故障的原因是什么?使用ROUND()或INT()修复浮点十进制错误:
如果INT(x/1000)=y,则在这之前Debug.Print(x/1000)
,然后查看得到的结果。同样地,也要为y做这件事。啊,这可能是根本原因。Debug.Print x=4000
和Debug.Print y=4
返回什么?8*sin(30)
的计算结果正好是4?你确定?我的数学不是很好,但对我来说它的评价是-098803。你能用Val(Range.Text)
将你的4转换成x,看看是否有效吗?派珀,你有没有按照上面的建议多次尝试过调试?如果在IF
IF之前执行Debug.Print X
和Debug.Print Y
操作,会得到什么结果