代码excel-vba中的双变量

时间:2013-10-02 21:33:08

标签: excel vba excel-vba

我在Excel-VBA中的代码如下:

Public Function ci(p As Double) As Long

Dim i As Long

i = 0
ci = 0

Do Until (p + i * 1.725) Mod 20 = 0

i = i + 1

ci = i 

Loop
End Function

所以,结果并不真实,因为这种论坛让我知道变量类型double并不精确。因此,运营商mod也没有给出可靠的结果。 我希望你能给出如何处理这个问题并使用正确的变量。

1 个答案:

答案 0 :(得分:0)

如果您处理的分数不超过4位小数,则可以尝试Currency数据类型。这有4位小数,并使用整数计算。否则,您可以使用Decimal,这是由以下人员分配的变体:

Dim vDecimal as Variant
vDecimal = CDec(0)

也使用整数计算,最多有28个小数位。

编辑:

这克服了Mod参数四舍五入:

Public Function ci(p As Currency) As Long
    ci = 0
    Do Until (p + ci * CCur(1.725)) * 1000 Mod 20000 = 0
        ci = ci + 1
    Loop
End Function