Ошибка точности журнала C ++ для двойного векторного массива?

У меня есть двойной векторный массив (вектор< double>) и его максимальное значение (1) и минимальное значение (0).

Когда я сделал ниже подоперацию, журнал дает (1. # INF00000000000000000) для индекса максимального значения (1 — 1.000000000000001) (двойная точность).

Как я могу предотвратить эту ошибку точности?

log( 1 - array[ i ] );

-1

Решение

Вы имеете в виду это?

if(array[i] >= 1)
return 0;
else if(array[i] <= 0)
return std::numeric_limits<double>::infinity();
else
return log(1 - array[i]);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]