VBA检查一个十进制值是否只有2个小数点。 使用Int()时出错

我正在使用vba在Excel文件上编写一些检查例程。 其中一个需要检查一些单元格的值是否只有2个或更less的小数点。 要做到这一点,我写了一个基本上有这个代码的函数:

Function checkValues(sheet as Worksheet) as Boolean val = sheet.Cells(1,1).Value val = val * 100 valInt = Int(val) if valInt <> val then checkValues = false Exit Function end if checkValues = true End Function 

问题是,当我把Cell(1,1)的值等于1,12时,这个函数返回False。 当我使用debugging,我清楚地看到valInt和val都等于112,但我不知道为什么valInt <> val'给我'真'。

任何人都可以帮助我?

PS:我已经尝试改变为Fix()函数,并尝试了很多其他语句。

非常感谢。

双精度数字不能精确地表示十进制值(除非该十进制数值可以表示为2的一些幂的和,例如0.75是精确的,因为它是2^-1 + 2^-2 )。 因此,使用Variant/Decimal的variablestypes而不是Variant/Double

 Function checkValues(Sheet As Worksheet) As Boolean Dim val1 As Variant ' Allows a subtype of Variant/Decimal Dim valInt As Long val1 = CDec(Sheet.Cells(1, 1).Value) * 100 valInt = Int(val1) If valInt <> val1 Then checkValues = False Exit Function End If checkValues = True End Function