计算球体积时出错,但公式是正确的

时间:2018-05-05 03:25:04

标签: c++ function formula

我想计算球体的表面积和球体的体积,但球体的体积是不正确的。如果我输入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();
}

2 个答案:

答案 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 以获得所需的准确度。