Apple предоставляет отличную пошаговую инструкцию для этого: Импорт пользовательских фреймворков на игровую площадку
Используя класс BigInteger; одна есть в библиотеках J # (определенно доступна из C #), другая - в F # (ее нужно протестировать), и есть автономные реализации , такие как эта на чистом C #.
Кроме того, действительно проверьте, что Вы действительно нуждаетесь в переменной с большей способностью, чем Int64 и не ссоритесь с целочисленной арифметикой C#.
, Например, этот код приведет к водосливной ошибке:
Int64 myAnswer = 20000*1024*1024;
На первый взгляд, который, могло бы казаться, был бы, потому что результат является слишком большим для Int64
переменная, но на самом деле это - потому что каждое из чисел на правой стороне формулы неявно вводится как Int32
, таким образом, пространство временной памяти, зарезервированное для результата вычисления, будет Int32
размер, и это - то, что вызывает переполнение.
результат на самом деле легко впишется Int64
, ему просто нужно одно из значений на праве, которое будет брошено к Int64
:
Int64 myAnswer = (Int64)20000*1024*1024;
Это обсуждено в [еще 117] деталь в этом ответе .
(я ценю, это не применяется в случае OP, но просто этот вид проблемы принес мне здесь!)
Можете ли вы использовать бета-версию .NET 4.0? Если это так, вы можете использовать BigInteger
.
В противном случае, если вы придерживаетесь 28 цифр, вы можете использовать decimal
- но имейте в виду, что, очевидно, это будет выполнять десятичную арифметику , поэтому для компенсации может потребоваться округление в различных местах.
Decimal имеет больший диапазон.
В .NET 4.0 есть поддержка bigInteger, но она еще не вышла из бета-версии.
Для чего вы хотите использовать эти номера? Если вы делаете расчеты с действительно большими числами, нужна ли вам точность до последней цифры? Если нет, вам следует подумать об использовании вместо этого значений с плавающей запятой. Они могут быть огромными, максимальное значение для типа double составляет 1,79769313486231570E + 308 (если вы не привыкли к научному представлению, это означает 1,79769313486231570, умноженное на 10000000 ... 0000 - 308 нулей).
Это должно быть большим достаточно для большинства приложений
Вы можете использовать десятичное . Он больше, чем Int64.
Он состоит из 28–29 значащих цифр.
Существует несколько библиотек для вычислений с большими целыми числами, большинство криптографических библиотек также предлагают класс для этого. См. это для получения бесплатной библиотеки.