交答案要说类型
约 8 分钟
函数交回来的到底是整数还是小数,必须在函数名前提前声明清楚。类型说错了,小数部分会被无声地砍掉。
求平均分是最典型的坑:
double average(int sum, int cnt) {
return (double)sum / cnt; // 先转成小数再除
}
如果写成 int average(...),那 return 时结果会被截断成整数:3 个 90 分平均是 90 没问题,但 90、90、91 的平均本该是 ,却会交回 90。
更隐蔽的是整数除法。即使函数返回 double,只要写成 return sum / cnt;,右边两个都是 int,会先按整数除法算出 ,再转成小数,小数点后永远是 0。要在除之前就把一方转成 double:
记住两条:
- 要小数结果,返回类型写
double; - 除号两边至少有一个是小数,否则整数除法先把精度丢了。
考试里凡是出现“平均、比例、百分比”,先想想会不会掉进整数除法。
小纸条
求平均分的函数,该交回什么类型?
登录 后可看答案