四舍五入到5的下一个最接近的倍数

2024-05-16 23:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将一个数字(输入值保证是一个正整数)舍入到5的下一个倍数。

我试过这个:

int round = ((grades[j] + 2)/5) * 5;

但是,这会将数字四舍五入到最接近的5的倍数。

例如:67四舍五入为65,而不是70。


Tags: 数字intgrades倍数round正整数
3条回答

总的来说应该是:

((n + denominator -1) / denominator )* denominator 

所以在你的情况下:

int round = ((grades[j] + 4)/5) * 5;

我们从分母中减去1的原因是为了处理舍入值的精确倍数,例如:

((70 + 4) / 5) * 5

会产生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;
}

输出:

2   5
7   10
123 125
32  35
int mod = grades[j] % 5;
int round = grades[j] - mod;
if (mod > 0) {
    round += 5;
}

相关问题 更多 >