Какое максимальное количество цифр может быть сохранено в числовом типе данных .NET - PullRequest
1 голос
/ 29 ноября 2010

Это просто из любопытства. Мы знаем, что для криптологических приложений два больших простых числа (более 100 цифр) умножаются, чтобы сформировать часть открытого ключа. Так какой тип номера Microsoft.NET может хранить самые большие простые числа, из сотен цифр? Другими словами, какой числовой тип данных может вместить наибольшее целое число в .NET? Я понимаю, что System.Double, который использует 8 байтов, может хранить максимальное значение (1.79769313486232 × 10 ^ 308) - это, вероятно, вмещает 309 цифр. Однако System.Decimal использует 16 байтов и может хранить максимум 79228162514264337593543950335, что составляет всего 29 десятичных цифр (меньше цифр, чем Double?)

Спасибо, Чак.

1 Ответ

2 голосов
/ 29 ноября 2010

Если вы используете .NET 4, взгляните на System.Numerics.BigInteger, который может хранить произвольно большие целые числа.309 цифр - он имеет широкий диапазон , но имеет только 15-16 цифр точности.Другими словами, если вы преобразуете большие значения long (например, чуть ниже long.MaxValue) в double и обратно, вы потеряете информацию.См. Мои статьи о двоичных и десятичных типах с плавающей запятой для получения дополнительной информации.

...