web-dev-qa-db-ja.com

数値C ++の切り上げと切り捨て

私は自分のプログラムがそれぞれ数値を切り上げたり切り下げたりできるようにしようとしています。

たとえば、数値が_3.6_である場合、私のプログラムは最も近い数値である4を切り上げると仮定し、数値が_3.4_である場合、3に切り捨てられます。

ceilライブラリを使用して、3つのアイテムの平均を取得しようとしました。

results = ceil((marks1 + marks2 + marks3)/3)

ただし、ceilは数値を切り捨てるだけで、数値をロールアップしません。

私が偶然見つけた1つのアルゴリズムがあります

var roundedVal = Math.round(origVal*20)/20;

しかし、私はまだいくつかの問題の式を把握することはできません。

11
std::ceil 

最も近い整数に切り上げます

std::floor 

最も近い整数に切り捨てます

std::round 

期待する動作を実行します

必要なものが提供されない場合は、ユースケースに数字を付けてください。

16

必要な関数は round と呼ばれ、信じられないかもしれません。

ceilは切り上げます。つまり、最も近い整数になります。 floorは切り捨てられます。

6
Violet Giraffe

std::roundはあなたが探しているものかもしれません。ただし、フロートを返すことに注意してください。 lroundまたはllroundを試して結果をlongまたはlong longで取得することをお勧めします(C++ 11)。

http://en.cppreference.com/w/cpp/numeric/math/round

4
怀春춘

CやC++で丸める関数は必要ありません。簡単なトリックを使用できます。 0.5を追加してから整数にキャストします。とにかくそれはおそらくすべてのラウンドです。

double d = 3.1415;
double d2 = 4.7;
int i1 = (int)(d + 0.5);
int i2 = (int)(d2 + 0.5);

i1は3、i2は5です。自分で確認できます。

3
MarcD