我寫這篇文章的代碼模塊中:Excel的VBA函數錯誤
Public Function first()
If (x + 1 < 0) Or (1 - 2 * Sin(x) < 0) Or Sqr(1 - 2 * Sin(x)) = 0 Then
first = "error"
Else
first = Sqr(x + 1)/Sqr(1 - 2 * Sin(x))
End If
End Function
它使某些數值的錯誤:
問題出在哪裏?
我寫這篇文章的代碼模塊中:Excel的VBA函數錯誤
Public Function first()
If (x + 1 < 0) Or (1 - 2 * Sin(x) < 0) Or Sqr(1 - 2 * Sin(x)) = 0 Then
first = "error"
Else
first = Sqr(x + 1)/Sqr(1 - 2 * Sin(x))
End If
End Function
它使某些數值的錯誤:
問題出在哪裏?
當X是,Sin(x)
等於0.656986598718789。
當您將此插入公式1 - 2 * Sin(x)
時,您將獲得-0.313973197437578。
無法拍攝的平方根(即Sqr(...)
)負數的。我建議增加Abs(...)
爲包裝,以保證一個正數,但我不知道你最終要完成的。
我敢肯定你的意圖就是x
在度進行測量,以評估Sin(x)
(如果沒有其他原因,比在弧度這比0
是相當罕見的其他整數評估),但功能Sin(x)
適用於弧度。您可以使用該功能Randians()
解決這個問題:
Public Function first(ByVal x As Double) As Double
x = Application.Radians(x)
If (x + 1 < 0) Or (1 - 2 * Sin(x) < 0) Or Sqr(1 - 2 * Sin(x)) = 0 Then
first = "error"
Else
first = Sqr(x + 1)/Sqr(1 - 2 * Sin(x))
End If
End Function
然後,例如,first(7)
計算結果爲1.218130941
。
爲什麼不能說明問題是什麼?這些「某些價值」是什麼?另外 - 什麼是'x'?你不是*傳遞*'x'作爲參數很奇怪。全局變量往往不是設計缺陷。 –
當'的sin(x)'是0.5(30度...?)然後'SQR(1 - 2 *的sin(x))'是零,你不能除以零。 – Jeeped
在上下文中,'x' *必須*是函數的參數。看起來他們從立陶宛語翻譯它(?)(其中「pirma」的意思是「第一」),並可能只是下降,從參數的'x'。 –