【问题标题】:Nearest Integer less than the given value [duplicate]小于给定值的最近整数 [重复]
【发布时间】:2020-01-03 18:30:13
【问题描述】:

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

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

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

【问题讨论】:

  • 向我们展示您的代码,我们可以提供帮助。我们不能从头开始为您编写。
  • @nicomp 我已经解释了我的问题
  • 你不懂。发布代码,我们提供帮助。我们不会根据您的规范编写新程序。
  • 负零到底有什么问题?毕竟,负零与零的值相同。
  • 所以你需要检查float是否持有一个整数值,然后你将它截断,如果它是一个整数值,你将它减一。副本会告诉你如何检查浮点数是否代表整数值。

标签: algorithm math


【解决方案1】:

如 cmets 所述,您可以了解如何检查数字是否为整数,并执行适当的操作: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;

【讨论】:

  • ceil(value-1) .....这也有效,不是吗?但出现的唯一问题是 -0
  • @Naman emm 是的,而且更好。
猜你喜欢
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 2014-06-12
相关资源
最近更新 更多