通过一个总分,动态分配条数的平均分(取整)
- 遇到了一个需求,就是通过给定一个类型定义总分:例如21分
- 然后分配给多个题目:例如4个
原本的思路:
- 前面的分数全部都向下取整,最后一个分数向上取整
- 例如:21分,分配4个
- 那么21/4 = 5.25分
- 也就是前面3个是5分
- 最后一个是6分
- 刚好是21分
就在我觉得这样写可以的时候,问题来了
- 当出现分数30分,分配4个的时候就出现问题了
- 30/4 = 7.5分
- 也就是前面3个是7分
- 最后一个是8分
- 但是这样子的话就出现 7+7+7+8 = 29分少一分的情况
最后的解决
- 先用30/4 = 7.5分 来向下取整7分
- 用 总分 即30 来模需要取整的个数 即4个 即 30%4 = 2
- 最后循环来判段
for(int i = 0; i < 4; i++) {
score = score + (i < 2 ? 1 : 0);
}
- 判断我们需要的个数是否小于模出来的数,如果小于就+0,大于就+1
- 这样的话就是出现 7+1,7+1,7+0,7+0
- 这样的话就是8+8+7+7 等于30
这样就解决了平均分取整的问题了。