将浮点数舍入为可被5整除的最接近的整数

时间:2015-07-13 16:29:26

标签: c++ c++11 rounding

我到处搜索,没有解决方案,我需要舍入到最接近的5个整数, 不知道如何制定这个,例如round(0.13)将返回5;这里是模式逻辑,其值为舍入后的第一个和预期结果;

0.12 => 0
0.99 => 0
1.01 => 0
4.99 => 5
5.45 => 5
7.00 => 5
8.00 => 10
9.10 => 10
14.34 => 15
17.4 => 15
17.5 => 20
37.6 => 40

2 个答案:

答案 0 :(得分:5)

尝试

float x = roundf(x / 5) * 5;

或者,假设x >= 0(以及 @JamesKanze 注明,x <= INT_MAX

int n = (int)(roundf(x / 5) * 5 + 0.5);

答案 1 :(得分:0)

尝试5 * floor ((n + 2.5) \ 5),其中\表示整数除法。这显然不是代码,但翻译成您喜欢的任何语言应该是微不足道的。