舍入到最接近的1/16的C倍数

时间:2012-03-14 00:42:09

标签: c

请让我知道如何将十进制数字(如0.53124)舍入到最接近的1/16倍数(即0.5)。同样地,当你绕0.46875时,我们必须得到0.5。感谢

3 个答案:

答案 0 :(得分:2)

floor(0.53124 * 16 + 0.5) / 16
floor(0.46875 * 16 + 0.5) / 16

floor(x * 16 + 0.5) / 16

答案 1 :(得分:1)

我想,你可以乘以16,调用round(double x)并除以16. noob code:

double x;
x=x*16;
x=round(x);
x=x/16;

和一行代码:

double x;
x=round(x*16)/16;

答案 2 :(得分:1)

C代码:

answer = (int) ((x + 1.0/32.0) * 16) / 16.0;

Python验证:

>>> int(((.53124 + 1.0/32) * 16)) / 16.0
0.5
>>> int(((.46875 + 1.0/32) * 16)) / 16.0
0.5
>>>