@YchenikPMI

Почему при делении 0 на -5 получается -0?

Или же вообще при делении 0 на любое вещественное отрицательное число получается -0.Как от этого избавиться, и сделать так, чтобы в консоль выводило не -0, а 0.Я примерно догадываюсь почему: при делении бесконечно малого на просто отрицательное число получается бесконечно малая отрицательная величина, в double она не может быть записана, поэтому получается -0.Так вот как же избавиться от этого -0 ?
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Можно делать примерно так:
#include <cfloat>
...
if (res > -DBL_EPSILON && res < DBL_EPSILON) res = 0;
cout << res;

В качестве DBL_EPSILON вы можете выбрать другое число, которое вам более удобно.
Красиво тут не получится. Так же как бесполезно делать точное сравнение (==) двух чисел с плавающей точкой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы