私は自分のプログラムがそれぞれ数値を切り上げたり切り下げたりできるようにしようとしています。
たとえば、数値が_3.6
_である場合、私のプログラムは最も近い数値である4を切り上げると仮定し、数値が_3.4
_である場合、3に切り捨てられます。
ceil
ライブラリを使用して、3つのアイテムの平均を取得しようとしました。
results = ceil((marks1 + marks2 + marks3)/3)
ただし、ceil
は数値を切り捨てるだけで、数値をロールアップしません。
私が偶然見つけた1つのアルゴリズムがあります
var roundedVal = Math.round(origVal*20)/20;
しかし、私はまだいくつかの問題の式を把握することはできません。
std::ceil
最も近い整数に切り上げます
std::floor
最も近い整数に切り捨てます
std::round
期待する動作を実行します
必要なものが提供されない場合は、ユースケースに数字を付けてください。
必要な関数は round と呼ばれ、信じられないかもしれません。
ceil
は切り上げます。つまり、最も近い整数になります。 floor
は切り捨てられます。
std::round
はあなたが探しているものかもしれません。ただし、フロートを返すことに注意してください。 lround
またはllround
を試して結果をlongまたはlong longで取得することをお勧めします(C++ 11)。
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です。自分で確認できます。