我正在尝试运行一些数值较大的数学公式,所以我使用了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