注册 登录
编程论坛 C语言论坛

计算圆的面积与体积为什么 用int 和float算的不一样

wulixiao 发布于 2019-08-27 10:29, 2452 次点击
程序代码:

#include"stdio.h"
#include"math.h"
#define PI 3.14159
void main()
{
    int r,area,s;
    r=4;
    area=4*r*r*PI;
    s=4/3*PI*pow(r,3);
    printf("%d, %d",area,s);   
}


程序代码:

#include"stdio.h"
#include"math.h"
#define PI 3.14159
void main()
{
    float r,area,s;
    r=4.0;
    area=4.0*r*r*PI;
    s=4.0/3.0*PI*pow(r,3.0);
    printf("%f, %f",area,s);   
}

运行结果不一样,希望大佬能解决一下。
4 回复
#2
forever742019-08-27 10:36
请明示对“解决”的预期,要不然还真不好解决。
#3
云不喜2019-08-27 11:31
回复 楼主 wulixiao
比如10/3*3 结果是9   过程是10/3=3    3*3=9
10.0/3.0*3.0结果是10.0   过程是10.0/3.0=3.333333    3.333333*3=9.999999保留一位就是10.0
因为小数点后的数在整形运算中被舍去了

[此贴子已经被作者于2019-8-27 11:33编辑过]

#4
rjsp2019-08-27 11:51
4/3 等于 1
#5
暴君Dentiny2019-08-27 12:08
f会将省去的部分四舍五入
1