5 c++
我需要将一个数字(输入保证为整数并为正数)舍入到下一个5的倍数.
我试过这个:
int round = ((grades[j] + 2)/5) * 5;
Run Code Online (Sandbox Code Playgroud)
但是,这会将数字四舍五入到最接近的5的倍数.
例如:67舍入到65而不是70.
要整理一般表格应该是:
((n + denominator -1) / denominator )* denominator
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下:
int round = ((grades[j] + 4)/5) * 5;
Run Code Online (Sandbox Code Playgroud)
我们从分母中扣除1的原因是为了处理舍入值的精确倍数,例如:
((70 + 4) / 5) * 5
Run Code Online (Sandbox Code Playgroud)
会屈服 70
您可以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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
2 5
7 10
123 125
32 35
Run Code Online (Sandbox Code Playgroud)
int mod = grades[j] % 5;
int round = grades[j] - mod;
if (mod > 0) {
round += 5;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6524 次 |
| 最近记录: |