问:C++求球的面积与体积,公式一样输出结果不一样?


记录学习过程2

体积公式为v = 4/3*PI * r * r * r;

#include<iostream>
using namespace std;
int main()
{
    const float PI = 3.14;
    float r, s, v;
;
    cout << "输入球体的半径:r=" << endl;
    cin >> r;
    s = 4*PI * r * r;
    v = 4/3*PI * r * r * r;
    cout << "球的体积是:" << v << endl << "球的表面积是:" << s << endl;

    return 0;
}

输入球体的半径:r=
5.68
球的体积是:575.406
球的表面积是:405.216
体积公式为 v = PI * r * r * r*4/3;

#include<iostream>
using namespace std;
int main()
{
    const float PI = 3.14;
    float r, s, v;
;
    cout << "输入球体的半径:r=" << endl;
    cin >> r;
    s = 4*PI * r * r;
    v = PI * r * r * r*4/3;
    cout << "球的体积是:" << v << endl << "球的表面积是:" << s << endl;

    return 0;
}

输入球体的半径:r=
5.68
球的体积是:767.208
球的表面积是:405.216
很疑惑,体积公式在数学运算中应该是一样的,但是将4/3换个位置输出结果就不一样了,不是很想得明白。

v = 4/3*PI * r * r * r;
4/3会被取整为1.
可以修改为:

v = 4.0/3*PI * r * r * r;

两个整数相除会按照整除处理,所以4/3=1,而不是1.33333
当你将4/3放到尾部的时候,由于PI是小数,所以前面几项相乘后是小数类型,这时除以3结果也是小数类型,就对了