我环顾四周,找不到我想要的东西。
我希望将所有数字都整数到整数。
示例:
5.9将是6
5.5将是6
5.1将是6
5.000001122将是6
5.0将是5
我在考虑是否将它们放入可以摆脱小数的整数但由于小数点刚刚下降而看起来不正确。我在这里纠正吗?
所以我考虑过这样做,然后在最终结果中添加1,这将解决大约99%的问题,但如果我的结果为5,我不想添加1。
我将如何解决这个问题?
答案 0 :(得分:11)
您正在寻找来自ceil()
的{{1}}或来自<math.h>
的{{1}}。
答案 1 :(得分:8)
[...]但它看起来不正确,因为小数点刚刚下降。我在这里纠正吗?
正确,强制转换为int只会丢弃小数部分(即将舍入为零)。
虽然来自cmath的std::ceil()
适用于您问题中的所有示例,但问题并未指定否定值所需的行为。例如应该-5.9轮到-6.0或-5.0? ceil(-5.9)= 5.0,这可能不是你想要的。如果你想要-6.0,那么你需要下限(-5.9),所以代码必须是:
round = f > 0 ? std::ceil(f) : std::floor(f) ;
问题在于你是否像ceil()那样将向上四舍五入,或者更确切地将从零舍入(在数量上向上而不是向上),以上代码呢?
答案 2 :(得分:0)
使用math.h函数ceil(数字)