回 帖 发 新 帖 刷新版面

主题:这个括号有点蹊跷

/*一个计算汽车行驶里程与耗油量的关系的代码*/
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     const float GTOL = 3.785;
  5.     const float MTOK = 1.609;
  6.     float mile, gallon, converted_val;

  7.     printf("Input the mile(s) traveled: ");
  8.     scanf("%f",&mile);
  9.     printf("Input the gallon(s) used: ");
  10.     scanf("%f",&gallon);
  11.     printf("Mile(s) per gallon: %.1f",mile/gallon);
  12.     //converted_val = gallon * GTOL / (mile * MTOK * 100.0); 计算结果为0.0
  13.     converted_val = gallon * GTOL / mile * MTOK * 100.0;
  14.     printf("\nLiter(s) per 100 kilometers: %.1f", converted_val);
  15.     puts("\nDone!");

  16.     return 0;
  17. }
请问为何代码当中被注释掉的那一行里的计算结果会为0.0呢?是不是跟括号的优先级有关呢?就算是先计算除数也应该不会让结果为零啊。请各位指教!

回复列表 (共4个回复)

沙发

第一,你得告诉别人,你输入了什么后,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

板凳


谢谢!的确是我自己设置输出的只有小数点后一位,所以如果是0.0xx的话就只能显示0.0了。

3 楼

且学且珍惜,得认学习真正消化

4 楼

我想说的是,一楼说的是对的,你取小数点的问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册