将小数舍入为整数

USD*_*des 2 c++

我环顾四周,找不到我想要的东西.

我想将我的所有数字四舍五入到整数.

例如:
5.9将是6
5.5将是6
5.1将是6
5.000001122将是6
5.0将是5

我在考虑是否将它们放入可以摆脱小数的整数但由于小数点刚刚下降而看起来不正确.我在这里纠正吗?

所以我想到这样做,然后在最终结果中加1,这将解决大约99%的问题,但如果我的结果为5,我不想添加1.

我将如何解决这个问题呢?

gre*_*ade 11

您正在寻找或来自的ceil()功能.<math.h>std::ceil()<cmath>


Cli*_*ord 8

[...]但它看起来不正确,因为小数点刚刚下降.我在这里纠正吗?

正确,转换为int只是丢弃小数部分(即向零舍入).

虽然std::ceil()来自cmath将适用于您的问题中的所有示例,但问题并未指定负值所需的行为.例如应该-5.9轮到-6.0或-5.0?ceil(-5.9)= 5.0,这可能不是你想要的.如果你想要-6.0,那么你需要楼层(-5.9),所以代码必须是:

round =  f > 0 ? std::ceil(f) : std::floor(f) ;
Run Code Online (Sandbox Code Playgroud)

现在的问题是,你是否被舍入为小区()呢,或者说舍入远离零(最高的幅度,而不是在最高值)上面的代码呢?