#t155. 计算输出2

计算输出2

题目描述

计算表达式 10+20/10×2−510 + 20 / 10 \times 2 - 5 的值,并输出结果。

输入格式

本题没有输入。

输出格式

输出一行,包含一个实数,表示该算式的结果。结果保留两位小数。

提示

这道题一次要接触三件新东西,分开看就不难。

一、小数怎么存:double 类型

整数用 int 存,小数用 double 存(double 是「双精度浮点数」)。写法:

double x = 3.14;        // 声明一个 double 变量,赋值为 3.14
double y = 10.0;        // 有小数点,就是小数
int    z = 10;          // 没有小数点,是整数

判断依据很简单:字面量里有没有小数点。10 是整数,10.0 是小数。

二、小数怎么输出:%f 与 %.2f

%f 输出小数,默认保留 6 位。在 % 和 f 之间加 .2,表示保留 2 位小数:

printf("%f\n",   3.14159);   // 3.141590(默认 6 位)
printf("%.2f\n", 3.14159);   // 3.14
printf("%.2f\n", 2.0);       // 2.00(会补齐到两位)

保留几位就把 2 换成几:%.1f、%.3f 都行。四舍五入由 printf 自动完成,不要自己先算。

三、整数除法:最容易被扣分的地方

两个整数相除,结果还是整数,小数部分直接丢掉(不是四舍五入):

printf("%d\n", 10 / 4);      // 2,不是 2.5
printf("%.2f\n", 10 / 4);    // 2.00,因为 10/4 先算成 2 再转小数
printf("%.2f\n", 10.0 / 4);  // 2.50,有一个是小数,按小数算
printf("%.2f\n", 10 / 4.0);  // 2.50,同上

一句话:想要小数结果,参与除法的数里至少要有一个是小数。

四、自己验证

把 10.0 / 4 改成 10 / 4 再跑一次,观察输出从 2.50 变成 2.00——这个差别就是本题和后面很多题的关键。

  • 先判断式子里哪一步是除法,再看那一步的两个操作数是不是都是整数——是的话,小数就被丢掉了。
  • 如果你希望结果带小数,把那个除法里的某个数改成小数形式即可。
  • 输出用 %.2f,不要自己先四舍五入再打印。

自查:分别按「普通四则运算」和「整数除法」手算一遍,看程序落在哪个结果上;再确认输出正好两位小数。