У меня проблема с сертификацией MCTS.Программа должна рассчитывать число пи до тех пор, пока пользователь не нажмет клавишу, после чего поток прерывается, результат возвращается в основной поток и печатается в консоли.Достаточно просто, верно?Это упражнение действительно предназначено для работы с потоками, но я сталкиваюсь с другой проблемой.Процедура, которая вычисляет пи, возвращает -1. # IND.Я прочитал некоторые материалы на web об этой ошибке, но я все еще не уверен, как ее исправить.Когда я меняю тип double на тип Decimal, неудивительно, что я очень быстро получаю исключение переполнения.Итак, вопрос в том, как правильно хранить цифры?Нужно ли создавать класс, чтобы каким-то образом хранить части числа, когда оно становится слишком большим для десятичного числа?
Class PiCalculator
Dim a As Double = 1
Dim b As Double = 1 / Math.Sqrt(2)
Dim t As Double = 1 / 4
Dim p As Double = 1
Dim pi As Double
Dim callback As DelegateResult
Sub New(ByVal _callback As DelegateResult)
callback = _callback
End Sub
Sub Calculate()
Try
Do While True
Dim a1 = (a + b) / 2
Dim b1 = Math.Sqrt(a * b)
Dim t1 = t - p * (a - a1) ^ 2
Dim p1 = 2 * p
a = a1
b = b1
t = t1
p = p1
pi = ((a + b) ^ 2) / (4 * t)
Loop
Catch ex As ThreadAbortException
Finally
callback(pi)
End Try
End Sub
End Class