本文介绍了双数据类型编号错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试使用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



这篇关于双数据类型编号错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 08:23