今天用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上报错),但是某些编译器不会报错,这点需要注意