Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 为什么这个双值比较的结果不是真的?_Excel_Vba_Double - Fatal编程技术网

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
操作,会得到什么结果