Деление числа с плавающей точкой на нуль
Этот дефект возникает, когда знаменателем операции деления может быть нулевое число с плавающей точкой.
Деление на нули может привести к сбою программы.
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Используйте этот список событий, чтобы определить, как переменная знаменателя получает нулевое значение. Вы можете реализовать исправление на любом событии в последовательности. Если сведения о результате не отображают историю событий, можно отследить их с помощью опций правого щелчка в исходном коде и просмотреть предыдущие связанные события. Смотрите также Результаты интерпретации Bug Finder в интерфейсе пользователя Polyspace Desktop.
Рекомендуется проверить нулевые значения знаменателя перед делением и обработать ошибку. Вместо непосредственного выполнения деления:
res = num/den;
res = div(num, den);
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, например, когда вы обрабатываете бесконечности в коде, добавляйте комментарии к своему результату или коду, чтобы избежать другого рассмотрения. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Группа: Численный |
Язык: C | C++ |
По умолчанию: On |
Синтаксис командной строки: FLOAT_ZERO_DIV |
Влияние: Высокий |
ИДЕНТИФИКАТОР CWE: 189, 369 |