2

大きな値を持つ数式を実行しようとしているので、Doubleデータ型を使用しています。しかし、大きな値を入力すると、それでも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
4

2 に答える 2

0

Decimal代わりにデータ型を使用してみてください。約 の整数値を保持できます(値の整数部分を格納するために 128 ビットのうち 96 ビットを使用できるため7,9 x 10^28、正確な数はです)。2^96 - 1ただし、これは複雑なデータ型であるため、コードでの使用方法を慎重に検討する必要があります。特に を使用する場合、すべての暗黙的な変換が機能するわけではありませんDouble

の正確な仕様については、MSDN on decimalを参照してくださいDecimal

于 2013-02-20T07:33:24.627 に答える