今天写个程序,结果总是和正确答案相差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要慎重一些了。。
本文通过一个具体的编程案例展示了在使用C++中的pow函数时可能遇到的精度问题。特别是在整数参数传入时,不同的编译器可能会给出不同的结果。文章强调了在使用pow函数时将参数转换为double类型的重要性。
439

被折叠的 条评论
为什么被折叠?



