c++ - 四舍五入到最接近的数字的倍数

标签 c++ math

有没有一种惯用的方法来四舍五入到一个数字的最近倍数,而不是向上和向下四舍五入并查看哪个最接近?

假设只有整数:

number   multiple   result
12       5          10
13       5          15
149      10         150

最佳答案

将倍数的一半相加,然后向下舍入。

result = ((number + multiple/2) / multiple) * multiple;

result = number + multiple/2;
result -= result % multiple;

如果数字正好在中间,则四舍五入。如果您在这种情况下想要不同的行为,您可能需要调整计算。另外,如果 number 可能接近类型范围的顶部,请注意溢出。

关于c++ - 四舍五入到最接近的数字的倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29557459/

相关文章:

c++ - boost::future::then() 不返回阻止销毁的 future

r - 使用 R 的 LU 分解

javascript - 使用带有模数运算符的数组索引确定值

java - 为什么 value/100 返回 0?

math - 步骤数学函数

math - 确定性有限状态自动机问题

c++ - 当我抛出异常时内存是否被释放?

c++ - 以编程方式检测 MessageBox 是否在 Windows CE 中打开

c++ - vector 上的迭代不调用函数

c++ - 如何将 std::bitset<64> 转换为 double?