今天写个程序,结果总是和正确答案相差1,百思不得其解,只好一步步缩小范围排查,最后发现居然是pow中整数的问题。
例如如下代码:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout<<(int)pow(7,7)<<endl;
cout<<(int)pow(7.0,7)<<endl;
cout<<pow(7,7)<<endl;
cout<<pow(7.0,7)<<endl;
return 0;
}
在devc++中运行的结果为
823542
823543
823543
823543
在vc6中则为
823543
823543
823543
823543
总之以后用pow一定要记得参数都要转为double。。用pow要慎重一些了。。