我想计算球体的表面积和球体的体积,但球体的体积是不正确的。如果我输入r = 3然后V = 84.8229980469而不是V = 113.0973358154,尽管球体的公式体积是正确的。请帮我。这是我的代码。
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
using namespace std;
float surface_area_of_sphere(float r)
{
float L;
L=4*3.14159265359*r*r;
return L;
}
float volume_of_sphere(float r, float &V)
{
V=4/3*3.14159265359*r*r*r;
}
int main()
{
float radius,volume,area;
cout<<"Please input radius of sphere r = ";
cin>>radius;
cout<<"==================================="<<endl;
volume_of_sphere(radius,volume);
cout<<"Volume of sphere = ";
printf("%10.10f\n",volume);
area=surface_area_of_sphere(radius);
cout<<"Surface area of sphere = ";
printf("%10.10f",area);
getch();
}
答案 0 :(得分:4)
您在计算中使用4和3,这些是整数,因此数学是用整数完成的。整数运算中4/3 = 1。
在所有地方使用4.0和3.0,它会起作用。
答案 1 :(得分:1)
@Aganju建议使用:
L = 4.0 * 3.14159265359*r*r;
并且函数volume_of_sphere()
不应返回值。
void volume_of_sphere(double r, double &V)
{
V = 4.0 / 3.0 * 3.14159265359*r*r*r;
}
此外,对于pi = 3.14159265359分辨率,将所有float
数据类型替换为double
以获得所需的准确度。