Eri*_*ric 12 double excel comparison vba
我无法在Excel VBA中比较2个双倍
假设我有以下代码
Dim a as double
Dim b as double
a = 0.15
b = 0.01
Run Code Online (Sandbox Code Playgroud)
在对b进行一些操作之后,b现在等于0.6
然而,与双数据类型相关的不精确让我很头疼,因为
if a = b then
//this will never trigger
end if
Run Code Online (Sandbox Code Playgroud)
你知道我怎么能删除双重类型的尾随不精确?
如果你要这样做....
Dim a as double
Dim b as double
a = 0.15
b = 0.01
Run Code Online (Sandbox Code Playgroud)
你需要在你的IF语句中添加圆函数,就像这样......
If Round(a,2) = Round(b,2) Then
//code inside block will now trigger.
End If
Run Code Online (Sandbox Code Playgroud)
另请参阅此处以获取其他Microsoft参考.
比较平等的双打是不明智的.
某些十进制值映射到多个浮点表示.因此,一个0.6并不总是等于另一个0.6.
如果我们从另一个中减去一个,我们可能得到类似于0.00000000051的东西.
我们现在可以将等式定义为具有小于某个误差容限的差异.
小智 5
这是我写的一个简单的函数:
Function dblCheckTheSame(number1 As Double, number2 As Double, Optional Digits As Integer = 12) As Boolean
If (number1 - number2) ^ 2 < (10 ^ -Digits) ^ 2 Then
dblCheckTheSame = True
Else
dblCheckTheSame = False
End If
End Function
Run Code Online (Sandbox Code Playgroud)
称之为:
MsgBox dblCheckTheSame(1.2345, 1.23456789)
MsgBox dblCheckTheSame(1.2345, 1.23456789, 4)
MsgBox dblCheckTheSame(1.2345678900001, 1.2345678900002)
MsgBox dblCheckTheSame(1.2345678900001, 1.2345678900002, 14)
Run Code Online (Sandbox Code Playgroud)