Разбор большого экспоненциального числа в .NET.

Я пытаюсь преобразовать некоторый Java-код в C # и столкнулся с проблемой с синтаксическим анализом очень больших экспоненциальных чисел в .NET.

Число, которое я пытаюсь разобрать "1.79769313486232E+308".

Я пробовал использовать оба double (это то, что используется в коде, которое я переводил), и десятичный, но оба бросают исключение переполнения, что число слишком велико.

double result = double.Parse("1.79769313486232E+308",
    System.Globalization.NumberStyles.Float,
    System.Globalization.CultureInfo.InvariantCulture)

Я также пробовал различные другие комбинации, например, использование NumberStyles.Any.

Это отлично работает на Java. Но прежде чем я попытаюсь преобразовать код из Java , я надеялся, что в .NET есть другая (родная) опция. Есть идеи?

c#,parsing,

3

Ответов: 2


3 принят
System.Numerics.BigInteger result = System.Numerics.BigInteger.Parse("1.79769313486232E+308", System.Globalization.NumberStyles.Float);

Вы можете попробовать BigIntegerдобавить ссылку System.Numericsв свой проект

РЕДАКТИРОВАТЬ

Из-за комментариев текущее число может быть представлено int ( без потери информации ), поскольку оно является целым. Это научная нотация, как это происходит. Например:

1.23E+11 or as 1.23 X 10^11

Итак, в его случае:

1.79769313486232E+308 = 1.79769313486232*10^308  

Который находится далеко от двойных границ и может быть записано как biginteger. Это число само целое, поэтому проблем нет!


0

Потому что это слишком большой брат.

Двойной может содержать до: 1.7976931348623157E + 308

Смотрите: это

C #, синтаксический анализ,
Похожие вопросы
Яндекс.Метрика