-->

Rounding up and down a number C++

2019-01-09 17:55发布

问题:

I'm trying to allow my program to round a number up and down respectively.

For example, if the number is 3.6, my program is suppose to round up the nearest number which is 4 and if the number is 3.4, it will be rounded down to 3.

I tried using the ceil library to get the average of 3 items.

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

However, the ceil only rounds the number down but does not roll the number up.

There's 1 algorithm i stumbled upon

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

but i still can't figure a formula for some problem.

回答1:

std::ceil 

rounds up to the nearest integer

std::floor 

rounds down to the nearest integer

std::round 

performs the behavior you expect

please give a use case with numbers if this does not provide you with what you need!



回答2:

The function you need is called round, believe it or not.

ceil rounds UP, btw. That is, to the closest larger integer. floor rounds down.



回答3:

std::round may be the one you're looking for. However, bear in mind that it returns a float. You may want to try lround or llround to get a result in long or long long (C++ 11).

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



回答4:

You don't need a function to round in C or C++. You can just use a simple trick. Add 0.5 and then cast to an integer. That's probably all round does anyway.

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

i1 is 3, and i2 is 5. You can verify it yourself.



回答5:

In c++, by including cmath library we can use use various functions which rounds off the value both up or down.

std::trunc

This simply truncates the decimal part, thas is, the digits after the decimal point no matter what the decimal is.

std::ceil

This is used to round up to the closest integer value.

std::floor

This is used to round down to the closest integer value.

std::round

This will round to the nearest integer value whichever is the closest, that is, it can be round up or round down.



标签: c++ cmath ceil