-1

double ベクトル配列 ( 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 に答える