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

新手上路,请多包涵

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

只假设整数:

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

原文由 Luchian Grigore 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 683
1 个回答

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

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

或者

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

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

原文由 Mike Seymour 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题