本来想通过换一个数据类型,从double换成long double来增加计算精度(不过后来发现double已经够了),结果发现计算结果都为零?
#include<stdio.h>
#include<math.h>
#define pai 3.141592
int main(void)
{
double r;
double area;
double volumn;
scanf("%lf",&r);
printf("%lf\n",r);//打印出来为检验r是否正确输入了
area = 4*pai*r*r;
volumn = (4*pai*pow(r,3))/3;
printf("%.6lf\n%.6lf",area,volumn);
return 0;
}
运行结果:
输入:2
输出: 2.000000
50.265472
33.510315
Process returned 0 (0x0) execution time : 1.165 s
Press any key to continue.
转换成long double后
#include<stdio.h>
#include<math.h>
#define pai 3.141592
int main(void)
{
double r;
long double area;
long double volumn;
scanf("%lf",&r);
printf("%lf\n",r);
area = 4*pai*r*r;
volumn = (4*pai*pow(r,3))/3;
printf("%.6lf\n%.6lf",area,volumn);
return 0;
}
输入:2(以下为输出)
2.000000
0.000000
0.000000
Process returned 0 (0x0) execution time : 2.131 s
Press any key to continue.
无论输入什么数字,下面两个计算结果都为0.为什么会这样呢