Выбрасывает ли C# исключение OverflowException для чисел с плавающей запятой? - PullRequest
0 голосов
/ 02 августа 2020

Компилятор C# генерирует исключение OverflowException для типов c с плавающей запятой?

Я пробовал это выяснить:

try
{
    checked
    {
        double d = Convert.ToDouble(Math.Pow(double.MaxValue, double.MaxValue));
        Console.WriteLine(d);
    }
}
catch (OverflowException)
{
    throw;
}

и то, что я видел в консоли Окно было ∞.

Может ли ∞ более полезно при отладке, чем исключение?

Ответы [ 2 ]

1 голос
/ 02 августа 2020

Это не исключение, оно показывает вам правильное значение, например БЕСКОНЕЧНОСТЬ ().

Вы также можете проверить это, набрав bool isInfinity = double.IsInfinity(d);

Он также вернет true для bool isInfinity = double.IsInfinity(1.0/0);

, который я использую. Net core 3.1.

1 голос
/ 02 августа 2020

Нет, C# не имеет исключений для операций с плавающей запятой.

Тип с плавающей запятой имеет 3 специальных значения: положительная бесконечность, отрицательная бесконечность и «не число».

Если результат вычисления больше, чем может быть представлен, он переполняется без исключения, и результатом является положительная бесконечность. - это то, как это представлено в строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...