我很想知道如何将数字四舍五入到最接近的整数。例如,如果我有:int a = 59 / 4;如果以浮点数计算,则为14.75;如何将结果存储为“ a”中的15?
3 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
int a = 59.0f / 4.0f + 0.5f;
这仅在分配给int时有效,因为它会丢弃'。'之后的任何内容。
编辑: 此解决方案将仅在最简单的情况下工作。一个更强大的解决方案是:
unsigned int round_closest(unsigned int dividend, unsigned int divisor)
{
return (dividend + (divisor / 2)) / divisor;
}
白猪掌柜的
TA贡献1893条经验 获得超10个赞
适用于任何除数和除数符号的代码:
int divRoundClosest(const int n, const int d)
{
return ((n < 0) ^ (d < 0)) ? ((n - d/2)/d) : ((n + d/2)/d);
}
如果您更喜欢宏:
#define DIV_ROUND_CLOSEST(n, d) ((((n) < 0) ^ ((d) < 0)) ? (((n) - (d)/2)/(d)) : (((n) + (d)/2)/(d)))
linux内核宏DIV_ROUND_CLOSEST对负除数不起作用!
- 3 回答
- 0 关注
- 1036 浏览
添加回答
举报
0/150
提交
取消