C语言这个小程序计算两个任意数的商,为何运行结果不对?5⼀2=2.0000 新手求指教

2024-12-26 18:39:45
推荐回答(5个)
回答1:

除法/的运算结果和运算对象的数据类型有关,两个数都是int ,则商就是int。若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分
如:16/5==3 16/5.0==3.20000 -13/4==-4
-13/-3==4 3/5==0 5/3==1

回答2:

输入的两个数如果定义为int型那么输出的结果也为int型,所以要把a,b都定义为float才能得出正确的结果。如下:
#include "stdio.h"main()
int main()
{
printf("请输入两个数:\n");
float a,b,g;
scanf("%d%d",&a,&b);
g=a/b;
printf("%f\n",g);

return 0;

}
可行的话就采纳吧。

回答3:

g是float型,但是ab是int,那么ab的结果还是int型
传给g是还是int,再改成float是当然是2了
因为=的优先级小于/

就算你是用强制转换也会系统出现误差
所以建议你一开始定义就全用 float

回答4:

这个不难理解,及时g是float型,但是ab是int,那么ab的结果还是int型
传给g是还是int,再改成float是当然是2了
因为=的优先级小于/

回答5:

/*

5 2

2.500000

Press any key to continue

*/

#include 
#include 
int main() {
int a,b;
float g;
scanf("%d%d",&a,&b); // 把%d/%d中间的“/”去掉
g = (float)a/b; // 强制类型转换
printf("%f\n",g);
getch();
return 0;
}