0

たとえば、オブジェクトCの値に応じて、数値を切り上げるまたは切り下げるにはどうすればよいですか。

数値が143であるとしましょう-140に切り下げたいのですが、数値が146の場合-150に切り上げたいと思います

助言がありますか?

4

6 に答える 6

7

145が150に丸められると仮定すると(これは科学技術の標準です)、式は次のとおりです。

x_rounded = ((x + 5)/10)*10;

より一般的には、最も近いnに丸めると、

x_rounded = ((x + n/2)/n)*n;

これは、整数の除算が常に切り捨てられるという事実に由来しています。

負の数の場合は、少し注意が必要です。

編集:また、それがすべて整数であると仮定します。float / doubleの場合、除算の動作が異なるため、C数学ライブラリを使用することをお勧めします。このような:

#include <math.h>

x_rounded = floor((x+5)/10) * 10;
于 2012-06-15T20:00:42.483 に答える
1

値 x を精度 p に丸めます。ここで、0 < p < 無限大です。(f.ex. p=0.25, 0.5, 1, 2, 3, 10,…)

float RoundTo(float x, float p)
{
  float y = 1/p;
  return int((x+(1/(y+y)))*y)/y;
}
float RoundUp(float x, float p)
{
  float y = 1/p;
  return int((x+(1/y))*y)/y;
}
float RoundDown(float x, float p)
{
  float y = 1/p;
  return int(x*y)/y;
}
于 2016-08-05T09:50:11.480 に答える
0

このlround関数は、floatを最も近い整数に丸めます。数値を10で除算し、丸めてから10を掛けることで、10の倍数にかなり簡単に丸めることができます。

コードで:

10 * lround(x / 10.0);
于 2012-06-15T20:01:50.300 に答える
0

最も簡単な解決策は、math.h を含めて round() 関数を使用することだと思います。

于 2012-06-15T20:07:11.020 に答える
0

これであなたの悩みはきっと解決します。

- (int) roundToNearest5:(int) value
{
        
   return (value+(5-(value%5));
        
}
于 2013-10-23T09:12:27.760 に答える
0

float を近い整数値に丸めるには、C 関数 floorf()、ceilf()、roundf() を調べてください。

整数を (たとえば) 最も近い 10 の倍数に丸めるには、Seva によって与えられた式が機能するはずです...

于 2012-06-15T20:17:20.610 に答える