演示
先上错误代码:
#include<bits/stdc++.h>
#define Pi 3.1415927
using namespace std;
int main()
{
//输入半径,计算球的体积
//V = 4/3(Pi*R^3)
double r;
while(cin >> r)
printf("%.3lf\n", (4/3)*(Pi*r*r*r));
return 0;
}
运行结果:
i >> 1
o >> 3.142
再上正确的代码:
#include<bits/stdc++.h>
#define Pi 3.1415927
using namespace std;
int main()
{
//输入半径,计算球的体积
//V = 4/3(Pi*R^3)
double r;
while(cin >> r)
printf("%.3lf\n", (4.0/3)*(Pi*r*r*r));
return 0;
}
运行结果:
i >> 1
o >> 4.189
错误原因
4/3除数与被除数都是整形,则结果就按照整形的运算规则计算,结果值就为整形。
而4.0/3 、 4/3.0 、4.0/3.0 这些都是浮点运算,都可以得到正确的值。