Уроки Visual Basic.NET
Один комментарий Бесконечно большие числа
Все мы знаем такие типы как Integer, Double, Long. И так же мы знаем что любой из этих типов имеет верхнюю и нижнюю границу значений.
И конечно же это не есть хорошо. Вдруг нам понадобится совершать вычисления с внешним долгом Украины? Тут уж никакие Intenger'ы не помогут.
Но нам на помощь приходит новый тип BigInteger, доступный начиная с .NET Framework 4.
Что на этот счет думает MSDN?
BigInteger - представляет произвольно большое знаковое целое число
В теории можно действительно работать с бесконечно большими числами, но это только в теории. На самом деле граница значений есть. Она зависит от кол-ва доступной оперативной памяти.
Теперь когда мы знаем что к чему, можно уже и поглядеть на пример кода:
Dim Число1 As String = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
Dim Число2 As String = "-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
Dim A As System.Numerics.BigInteger = 0
Dim B As System.Numerics.BigInteger = 0
Dim C As System.Numerics.BigInteger = 0
Try
A = System.Numerics.BigInteger.Parse(Число1)
B = System.Numerics.BigInteger.Parse(Число2)
C = A + B
MsgBox(C.ToString)
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
Как можно увидеть складываются два гугла (единица со ста нулями), один положительный другой отрицательный. Ни одному другому целочисленному типу данных, вычисления с такими числами не светят.
Статью и пример для вас подготовил Gemorg. Прошу любить и жаловать)
k_o_n_k_u_r_s_2014
P.S. Для работы примера нужно добавить ссылку на сборку System.Numerics в свойствах проекта.
Похожие записи:
Метки: System.Numerics, Бесконечно большие числа, большие числа
Gemorg
Просмотров: 5 860
Запись опубликована в 15:07





Стоит отметить еще такие моменты:
1. Если объявлять переменную так:
Dim A As System.Numerics.BigInteger = 1000000000000000000000000000000000
то Студия будет выдавать ошибку "Переполнение"
2. Если объявить так:
Dim A As System.Numerics.BigInteger = "1000000000000000000000000000000000"
то со стороны Студии ошибок не будет, однако, считать будет неверно