有没有一种惯用的方法来舍入到最接近的数字的倍数,而不是向上和向下舍入并看哪一个最接近?
假设只有整数:
number multiple result
12 5 10
13 5 15
149 10 150
Run Code Online (Sandbox Code Playgroud)
Mik*_*our 26
添加一半的倍数,然后向下舍入.
result = ((number + multiple/2) / multiple) * multiple;
Run Code Online (Sandbox Code Playgroud)
要么
result = number + multiple/2;
result -= result % multiple;
Run Code Online (Sandbox Code Playgroud)
如果数字恰好位于中间,则会向上舍入.如果在这种情况下需要不同的行为,则可能需要调整计算.另外,如果number可能接近类型范围的顶部,请注意溢出.
| 归档时间: |
|
| 查看次数: |
18177 次 |
| 最近记录: |