我需要将一个数字(输入保证为整数且为正数)四舍五入到下一个 5 的倍数。
我试过这个:
int round = ((grades[j] + 2)/5) * 5;
但是,这会将数字四舍五入到最接近的 5 的倍数。
例如:67 四舍五入到 65,而不是 70。
原文由 user5979025 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要将一个数字(输入保证为整数且为正数)四舍五入到下一个 5 的倍数。
我试过这个:
int round = ((grades[j] + 2)/5) * 5;
但是,这会将数字四舍五入到最接近的 5 的倍数。
例如:67 四舍五入到 65,而不是 70。
原文由 user5979025 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以取 grades[j]
和下一个数字之间的差异,然后添加它。例如,如果 grades[j] == 12
那么 12 mod 5 == 2
,那么添加 5 - 2
。
这是一个测试它的示例程序:
#include <iostream>
int main() {
int x[] = {2,7,123,32}; // some random numbers to show how this works
for (int i = 0; i < 4; {
std::cout << x[i] << "\t" << x[i] + ((5-(x[i] % 5)) % 5) << std::endl;
}
return 0;
}
输出:
2 5
7 10
123 125
32 35
原文由 CIsForCookies 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
总结一般形式应该是:
所以在你的情况下:
我们从分母中减去 1 的原因是为了处理舍入值的精确倍数,例如:
会产生
70