Двойное деление на ноль возвращает ошибку деления на ноль.

Я испытываю неожиданное поведение и надеюсь, что кто-то может помочь с некоторыми советами относительно того, на каких областях сосредоточить расследование.

У меня есть два метода, один по существу выполняет тест деления на ноль для двойника, второй вызывает метод extern для неуправляемой DLL.

Примечание: В среде выполнения .Net деление Double на ноль должно возвращать значение Infinity (забавно, с положительным или отрицательным оттенком).

Псевдокод того, что я делаю, выглядит примерно так:

InfinityTest(); // Returns an Infinity value as expected
DllCall();
InfinityTest(); // Divide by zero error on second call.

Первый вызов InfinityTest () возвращает значение Infinity, как и ожидалось. Второй вызов InfinityTest () вызывает исключение Divide by Zero, которого я не ожидал.

Обновление

Эффективный код InfinityTest () ниже. Для краткости я удалил элементы try / catch и т. Д. У меня нет разрешения подробно рассказывать об элементе псевдокода DllCall () , извиняюсь.

private double InfinityTest()
{
    double a = 1.0;
    int b = 0;
    return a / b;
}
17
задан Aziz Shaikh 1 October 2012 в 08:15
поделиться