向上和向下舍入数字C ++

时间:2016-10-07 20:07:39

标签: c++ cmath ceil

我试图允许我的程序分别上下舍入一个数字。

例如,如果数字为3.6,我的程序会将最接近的数字四舍五入为4,如果数字为3.4,则会向下舍入为3。

我尝试使用ceil库来获得3个项目的平均值。

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

但是,ceil仅将数字向下舍入,但不会将数字向上滚动。

我偶然发现了一种算法

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

但我仍然无法找出某个问题的公式。

5 个答案:

答案 0 :(得分:16)

std::ceil 

向上舍入到最接近的整数

std::floor 

向下舍入到最接近的整数

std::round 

执行您期望的行为

如果这不能满足您的需求,请提供带有数字的用例!

答案 1 :(得分:5)

您需要的功能称为round,信不信由你。

ceil向上舍入,顺便说一下。也就是说,到最接近的较大整数。 floor向下舍入。

答案 2 :(得分:4)

std::round可能是您正在寻找的人。但是,请记住它返回一个浮点数。您可能需要尝试使用lroundllround来获得长或长的结果(C ++ 11)。

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

答案 3 :(得分:3)

您不需要在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.您可以自己验证。

答案 4 :(得分:-1)

在c ++中,通过包含cmath库,我们可以使用各种函数来对值进行向上或向下取整。

std::trunc

这只是截断了小数部分thas是小数点后的数字,无论小数是什么。

std::ceil

它用于舍入到最接近的整数值。

std::floor

它用于舍入到最接近的整数值。

std::round

这将舍入到最接近的整数值,以最接近的整数为准,即可以向上舍入或向下舍入。