更好地解释我的问题 我想知道小于给定值的最接近整数。 现在这个值是double类型的...所以有两种情况
6.8
,答案将为6
6
小一,那么答案将为5
现在简单地发言将不适用于第二种情况
因此,我尝试了此ceil(value-1)
,但是在这里我再次遇到一个问题,就是当value为0.3
时,它应该输出0
,但它输出的是-0
(负零)。
那么实现此目标的最佳方法是什么?
答案 0 :(得分:1)
如评论中所述,您可以查看如何检查数字是否为整数,并执行适当的操作:Checking if float is an integer。
但是,如果您想要更有趣的方式,没有任何条件:
float a;
float result;
cin >> a;
result = std::floor(a) - !std::ceil(a - std::floor(a)); // ceil(a - 1) <--- As told in @Naman comment, it's a better way.
cout << result << endl;