问题
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.
来源:https://stackoverflow.com/questions/39925020/rounding-up-and-down-a-number-c