主题:这个括号有点蹊跷
探路者二号
[专家分:1170] 发布于 2013-01-27 10:24:00
/*一个计算汽车行驶里程与耗油量的关系的代码*/
-
#include <stdio.h>
-
-
int main(void)
-
{
-
const float GTOL = 3.785;
-
const float MTOK = 1.609;
-
float mile, gallon, converted_val;
-
-
printf("Input the mile(s) traveled: ");
-
scanf("%f",&mile);
-
printf("Input the gallon(s) used: ");
-
scanf("%f",&gallon);
-
printf("Mile(s) per gallon: %.1f",mile/gallon);
-
//converted_val = gallon * GTOL / (mile * MTOK * 100.0); 计算结果为0.0
-
converted_val = gallon * GTOL / mile * MTOK * 100.0;
-
printf("\nLiter(s) per 100 kilometers: %.1f", converted_val);
-
puts("\nDone!");
-
-
return 0;
-
}
请问为何代码当中被注释掉的那一行里的计算结果会为0.0呢?是不是跟括号的优先级有关呢?就算是先计算除数也应该不会让结果为零啊。请各位指教!
|
回复列表 (共4个回复)
沙发
bruceteen [专家分:42660] 发布于 2013-01-28 08:22:00
第一,你得告诉别人,你输入了什么后,converted_val计算结果为0.0?
比如说输入
1
10000
第二,你得告诉别人你是怎么判断“计算结果为0.0”的?
如果你是凭“printf("\nLiter(s) per 100 kilometers: %.1f", converted_val);”这一句的话,那不能说明“计算结果为0.0”,只能说如果取一位小数的话,那么约等于0。
比如 printf( "%.1f", 0.0499 ); 输出为 0.0
板凳
探路者二号 [专家分:1170] 发布于 2013-01-29 22:05:00
谢谢!的确是我自己设置输出的只有小数点后一位,所以如果是0.0xx的话就只能显示0.0了。
3 楼
网络雄风 [专家分:90] 发布于 2014-04-28 17:17:00
且学且珍惜,得认学习真正消化
4 楼
CL0419 [专家分:0] 发布于 2014-06-04 22:32:00
我想说的是,一楼说的是对的,你取小数点的问题。
我来回复