pow函数和double类型转换,出错
#include<math.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int aa = 2;
double a ;
a = pow(10,aa);
printf("%f %d %d %d\n",a,(long)a, (long)pow(10,2),(long)pow(10,aa));
system("pause");
}
在windowsXP+Dev-C++4.9.9.2下输出为:
100.000000 100 100 99
为什么最后一个会是99而不是100?
[解决办法]
%d改成%ld试试,
BTW 我在gcc下输出没有问题
如下
100.000000 100 100 100
sh: pause: not found
[解决办法]
浮点数不精确。
[解决办法]
double pow(double,double).