除法/的运算结果和运算对象的数据类型有关,两个数都是int ,则商就是int。若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分
如:16/5==3 16/5.0==3.20000 -13/4==-4
-13/-3==4 3/5==0 5/3==1
输入的两个数如果定义为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;
}
可行的话就采纳吧。
g是float型,但是ab是int,那么ab的结果还是int型
传给g是还是int,再改成float是当然是2了
因为=的优先级小于/
就算你是用强制转换也会系统出现误差
所以建议你一开始定义就全用 float
这个不难理解,及时g是float型,但是ab是int,那么ab的结果还是int型
传给g是还是int,再改成float是当然是2了
因为=的优先级小于/
/*
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;
}