hey*_*ack 7 excel vba excel-vba user-defined-functions
我正在尝试在VBA中编写一个简单的函数来测试实际值并输出字符串结果,如果它是一个完美的立方体.这是我的代码:
Function PerfectCubeTest(x as Double)
If (x) ^ (1 / 3) = Int(x) Then
PerfectCubeTest = "Perfect"
Else
PerfectCubeTest = "Flawed"
End If
End Function
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用简单的if语句来测试值的立方根是否等于其整数部分(即没有余数).我尝试使用一些完美的立方体(1,8,27,64,125)测试该功能,但它仅适用于数字1.任何其他值都会吐出"有缺陷"的情况.知道这里有什么问题吗?
您正在测试多维数据集是否等于提供的double.
因此,对于8,您将测试2 = 8.
编辑:还发现了一个浮点问题.为了解决这个问题,我们将小数点后一点来尝试克服这个问题.
更改为以下内容:
Function PerfectCubeTest(x As Double)
If Round((x) ^ (1 / 3), 10) = Round((x) ^ (1 / 3), 0) Then
PerfectCubeTest = "Perfect"
Else
PerfectCubeTest = "Flawed"
End If
End Function
Run Code Online (Sandbox Code Playgroud)
或者(感谢罗恩)
Function PerfectCubeTest(x As Double)
If CDec(x ^ (1 / 3)) = Int(CDec(x ^ (1 / 3))) Then
PerfectCubeTest = "Perfect"
Else
PerfectCubeTest = "Flawed"
End If
End Function
Run Code Online (Sandbox Code Playgroud)