今天早些时候我问了半天的问题,得到了@alk的大力帮助。在那篇文章中,我的想法是4.5比5,但4.4比4。@alk给出的解决方案是:

int round_number(float x)
{
 return x + 0.5;
}

它的工作非常优雅!
在本文中,我想讨论如何在C中实现ceil()函数。
按照@alk给出的最后一个解决方案的思路,我得出了以下结论:
int round_up(float y)
{
   return y + 0.99999999;
}

这适用于除浮点数y有.00000001之外的所有情况。我想知道是否有更好的方法来做与C中的ceil()相同的事情。

最佳答案

除非你确切地知道float的epsilon(我不确定标准C是否提供了这个值),否则我认为你会陷入return (y < 0 || y == (int)y) ? y : y + 1;

关于c - 四舍五入具有非零十进制数字的浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22123929/

10-12 22:57