我正在嘗試運行一些數值較大的數學公式,所以我使用了Double
數據類型。但是如果我輸入較大的值,我仍然可以得到NaN的答案。那我該如何解決這個問題?獲取雙數據類型的NaN
例如,如果我通過Varx = 3和countx = 1230,我得到的結果爲NaN。
Public Function EulerForPro(ByVal Varx As Integer, ByVal Countx As Integer) As Double
Dim Result1 As Double = 1
Dim Result2 As Double = Varx
Dim Result As Double = 0
For i = 1 To Countx
Result1 = Result1 + (Math.Pow(-1, i) * Math.Pow(Varx, (2 * i))/factx(2 * i))
Next
For i = 1 To Countx
Result2 = Result2 + (Math.Pow(-1, i) * Math.Pow(Varx, ((2 * i) + 1))/factx((2 * i) + 1))
Next
Result = Result1 + Result2
Label2.Text = Result1
Label3.Text = Result2
Label4.Text = Result
End Function
您將遇到的一個問題是雙精度數字太小,無法容納諸如Math.Pow(3,2460)等值;根據計算器,大約750個數量級太小。 'factx'函數有什麼作用? – 2013-02-20 08:42:06
factx函數計算數字的階乘。 – Navaneet 2013-02-20 09:13:11
我這麼認爲。這個數字也會太大以致無法放入雙倍數(比您計算的功率大得多)。我懷疑試圖用'加無窮'來劃分是你問題的原因。您需要創建自己的數據類型,以處理如此大的數字,從某處找到現有數據類型,或者改變解決問題的方法。 – 2013-02-20 09:43:41