-1

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

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

如何防止这种精度错误?

log( 1 - array[ i ] );
4

1 回答 1

0

你是这个意思吗?

if(array[i] >= 1)
  return 0;
else if(array[i] <= 0)
  return std::numeric_limits<double>::infinity();
else
  return log(1 - array[i]);
于 2013-06-13T14:43:07.323 回答