Я пытаюсь запустить математическую формулу, которая имеет большие значения, поэтому я использую тип данных 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'? –
Функция factx вычисляет факториал числа. – Navaneet
Я так и думал. Это число также будет слишком большим, чтобы вписаться в двойное (намного больше, чем вы рассчитываете). Я подозреваю, что попытка разделить на «плюс-бесконечность» является причиной вашей проблемы. Вам необходимо создать свой собственный тип данных, способный обрабатывать такие большие числа, найти где-то существующий или изменить свой подход к решению проблемы. –