long 支持小数吗?

Does long support decimals?

我试图理解 ByVal 和 ByRef,并使用 ByVal 关键字将参数从 long 传递到 double。

我注意到 VBA 给了我错误的 y 平方值答案。 当 y(我的 sub 中的 i)是整数时有效。

在下面的例子中我有 i = 22.5.
电子表格给了我 506.25。
我的函数给了我 484.

我以为 long 和 double 都支持小数。

Sub automation_test()

Dim i As Long
Dim j As Long
Dim x As Long
Dim ans As Long

i = Range("B1")
j = Range("B2")
x = Range("B3")

ans = my_model(i, j, x)

Range("B4").Value = ans

End Sub


Function my_model(ByVal y As Double, ByVal m As Double, ByVal q As Double) As Double

' my_model = (y ^ 2) * (m ^ 3) * (q ^ 1 / 2)

my_model = y ^ 2

End Function

您必须声明所有使用的变量 As Double(或 As Single,取决于要使用的最大值)。

Long 变量不接受小数。

差值恰好来自四舍五入(向下):

22.5^2 = 506.25

22^2 = 484