双向量数组的C ++日志精度错误?

时间:2013-06-13 14:37:28

标签: c++ vector floating-point-precision double-precision

我有双向量数组(向量< double>)及其最大值(1)和最小值(0)。

当我在子操作下面执行时,log给出(1.#INF00000000000000000)最大值索引(1 - 1.000000000000001)(双精度)。

如何防止此精度错误?

log( 1 - array[ i ] );

1 个答案:

答案 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]);