Бесконечно большие числа

Все мы знаем такие типы как Integer, Double, Long. И так же мы знаем что любой из этих типов имеет верхнюю и нижнюю границу значений.

И конечно же это не есть хорошо. Вдруг нам понадобится совершать вычисления с внешним долгом Украины? Тут уж никакие Intenger'ы не помогут.

Но нам на помощь приходит новый тип BigInteger, доступный начиная с .NET Framework 4.

1332915113 4 thumb4 300x225 Бесконечно большие числа

Что на этот счет думает 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 в свойствах проекта.

  Метки: , ,
  Gemorg
  Просмотров: 2 549
  Запись опубликована в 15:07

Один комментарий

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

Есть что сказать? Тогда действуй!


:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-o :-P :-D :-? :) :( :!: 8-O 8)