c++pow()関数について

595 ワード

今日c++のpow()関数で問題を発見しました.
そのままpow(int,int)で使うと誤差がありますが、もちろん関数のパラメータは(double,double)のはずですが、前のパラメータをdoubleに変更すると誤差はなくなります(少なくとも小さいですが)、同時に後のパラメータもdoubtに変更すると誤差がまた発生します.これはどういうことですか?
資料を調べてもらう
double pow (double base     , double exponent);
      float pow (float base      , float exponent);
long double pow (long double base, long double exponent);
     double pow (double base     , int exponent);
long double pow (long double base, int exponent);

すなわち、(int,int)のパラメータを使用する場合、コンパイラはそのリロードバージョンを使用する(hdojでエラーが報告されている)とは特定できませんが、一部のコンパイラではエラーが報告されませんので注意してください.