0

int に数字 (00-59) があり、5 に丸めたいと思います。たとえば、06 は 5 になり、08 は 10 になります。ああ、07 も 10 になります。 ?

4

8 に答える 8

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;
}

お役に立てれば。

于 2012-10-31T16:18:44.297 に答える
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 は任意の数字に置き換えることができます。

于 2012-10-31T16:19:07.393 に答える
1

式を使用する

rounded = (number / 5) * 5;
if ((number % 5) > 1)
  rounded += 5;
于 2012-10-31T16:20:32.313 に答える
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;

それが役に立てば幸い !!

于 2012-10-31T18:01:29.143 に答える
0

ルックアップテーブルはどうですか

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

于 2012-10-31T16:18:41.457 に答える
0

これは C 固有のものではありませんが、考え方は同じです。

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

もちろん、これは疑似コードにすぎません。C の場合、有効なものを取得するには、single にキャストする必要があります。

c の場合、ラウンドはmath.h

于 2012-10-31T16:17:46.930 に答える
0

浮動小数点の領域を掘り下げたい場合は、次のようにすることができます。

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

あなたを確認してください#include <math.h>このイデオネの例を参照してください。

于 2012-10-31T16:17:50.397 に答える
0

これはうまくいくはずです:

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

(+ 3不自然に思えるかもしれませんが、7 を四捨五入したいとします。)

于 2012-10-31T16:19:28.273 に答える