Бесконечно большие числа
Все мы знаем такие типы как 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 в свойствах проекта.
Стоит отметить еще такие моменты:
1. Если объявлять переменную так:
Dim A As System.Numerics.BigInteger = 1000000000000000000000000000000000
то Студия будет выдавать ошибку "Переполнение"
2. Если объявить так:
Dim A As System.Numerics.BigInteger = "1000000000000000000000000000000000"
то со стороны Студии ошибок не будет, однако, считать будет неверно