我有双向量数组(向量< double>)及其最大值(1)和最小值(0)。
当我在子操作下面执行时,log给出(1.#INF00000000000000000)最大值索引(1 - 1.000000000000001)(双精度)。
如何防止此精度错误?
log( 1 - array[ i ] );
答案 0 :(得分:0)
你是说这个吗?
if(array[i] >= 1)
return 0;
else if(array[i] <= 0)
return std::numeric_limits<double>::infinity();
else
return log(1 - array[i]);