在C中舍入整数

时间:2012-10-31 16:14:25

标签: c rounding

我在一个int中有一个数字(00-59),我想把它四舍五入到5,例如06将是5和08将是10.哦,07也将是10.我怎么去关于这样做?

8 个答案:

答案 0 :(得分:6)

您可以使用以下代码。

int round_5(int num)
{
   int t1;
   t1= num%5;
   if(t1>=2)
      num+=(5-t1);
   else
      num-=t1;
   return num;
}


main()
{
   int num = 57;
   num = round_5(num);
   printf("%d",num);
   return 0;
}

希望这有帮助。

答案 1 :(得分:2)

如果你想编写自己的圆函数,这里应该有用:

int round(int number, int round_by)
{
    int whole = number / round_by;
    char superior = ((number % round_by) >= (round_by / 2)) ? 1 : 0;
    return (whole + superior) * round_by;
}

int main()
{
    printf("%d\n", round(6, 5)); // 5
    printf("%d\n", round(7, 5)); // 10
    printf("%d\n", round(8, 5)); // 10
    printf("%d\n", round(33, 10)); // 30
    printf("%d\n", round(33, 5)); // 35
}

您可以按所需的每个数字替换5。

答案 2 :(得分:1)

使用公式

rounded = (number / 5) * 5;
if ((number % 5) > 1)
  rounded += 5;

答案 3 :(得分:0)

这不是C特定的,但这个想法是一样的:

func roundToNearest(num someNumber, num roundToNearest)
{
    return (round(someNumber / roundToNearest) * roundToNearest);
}

这当然只是伪代码,在C的情况下,你需要投射到单身才能获得任何有用的东西。

在c的情况下,round来自math.h

答案 4 :(得分:0)

如果您愿意深入研究浮点领域,可以这样做:

int rounded = (int)(round((float)input / 5) * 5);

确保#include <math.h>。请参阅this ideone example

答案 5 :(得分:0)

查找表怎么样

int minutes [60] = {0,0,0,5,5,5,5,5,10,10,10,...};

答案 6 :(得分:0)

这应该有效:

unsigned int round5(unsigned int n)
{
    return ((n + 2) / 5) * 5;
}

(说+ 3如果你想要第7轮,虽然这看起来不自然。)

答案 7 :(得分:0)

您可以使用以下代码:

//no -> number  ro -> round off to
//ro = 5 in your case
int no, ro;
if(no%ro >= 2)
    no = ((no/ro)+1)*ro;
else
    no = (no/ro)*ro;

希望它有所帮助!!