最接近整数小于给定值

时间:2019-08-30 13:35:49

标签: algorithm math

更好地解释我的问题 我想知道小于给定值的最接近整数。 现在这个值是double类型的...所以有两种情况

  1. 如果value包含小数部分,即value为6.8,答案将为6
  2. 如果value已经是整数,则答案应比value为6小一,那么答案将为5

现在简单地发言将不适用于第二种情况 因此,我尝试了此ceil(value-1),但是在这里我再次遇到一个问题,就是当value为0.3时,它应该输出0,但它输出的是-0(负零)。 那么实现此目标的最佳方法是什么?

1 个答案:

答案 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;