MS Access双重类型

时间:2015-08-14 03:05:43

标签: ms-access double

我有一个比较值的查询。两个值都相等。数据类型是双倍的。但是,结果总是错误的。你遇到过同样的情况吗?

我尝试在比较数据之前对数据进行舍入,得到了正确的结果。您认为这个问题的原因是什么?

2 个答案:

答案 0 :(得分:1)

这是浮动数字的众所周知的副作用。

您有几种选择。测试差异或转换为其他数据类型:

Where Abs(Field1 - Field2) < 0.00001  (or whatever value you consider equal)
Where CCur(Field1) = CCur(Field2)
Where CDec(Field1) = CDecCur(Field2)

答案 1 :(得分:0)

确认两个变量的值相等。我认为Double是浮点数,精度为15。如果您的显示器显示带有舍入的双变量,它们可能看起来相等但实际上它们可能不相等。

我建议您Round(variable1, 4)并将其与Round(variable2, 4)进行比较。尝试使用如下测试例程测试变量:

Public Sub SendDoubles()
    Dim a As Double
    Dim b As Double

    a = 10.0000000001
    b = 10.000000001

    TestDoubles a, b
End Sub

Public Sub TestDoubles(a As Double, b As Double)

    MsgBox CStr(a) & vbCrLf & CStr(b)
    MsgBox a = b
    MsgBox Round(a, 4) = Round(b, 4)

End Sub

请注意,CStr会将您的double转换为字符串,以便您可以显示这两个变量的值。第二个MsgBox尝试按原样比较它们,第三个将它们与舍入进行比较。