本文介绍了双数据类型编号错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我尝试使用VB或C#或VBA进行校准时
0.43 + 0.000001 - 0.430001
结果不会为零!为什么?
请试一试!
我的尝试:
When i try to cal in VB or C# or VBA
0.43 + 0.000001 - 0.430001
The result will not be zero! Why?
Please try it!
What I have tried:
Sub Test()
Dim V As Double
V = 0.43 + 0.000001 - 0.430001
If V <> 0 Then
MsgBox "Why we goes hear?"
End If
End Sub
推荐答案
public static bool AlmostEquals(this double value, double other, double epsilon = 1e-15)
{
return (((other - epsilon) < value) && (value < (other + epsilon)));
}
这是基于B. Clay Shannon在同一篇文章中的评论。
适用于您的案例的此代码段的使用可能是:
It is based on the comment from B. Clay Shannon in the same article.
Usage of this snippet applied to your case could be:
Sub Test()
Dim V As Double
V = 0.43 + 0.000001 - 0.430001
If Not V.AlmostEquals(0) Then
MsgBox "Why we goes hear?"
End If
End Sub
这篇关于双数据类型编号错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!