Rounding up and down a number C++

折月煮酒 提交于 2019-11-26 11:37:40

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!