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

Rounding up and down a number C++

我试图让我的程序分别向上和向下舍入一个数字。

例如,如果数字是 3.6,我的程序假设将四舍五入到最接近的数字,如果数字是 3.4,它将向下舍入到 3。

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

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

但是,ceil 只是将数字向下舍入,而不是向上舍入。

我偶然发现了 1 个算法

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

但我还是想不出一些问题的公式。

你需要的功能叫做round,信不信由你。

ceil 四舍五入,顺便说一句。也就是说,到最接近的较大整数。 floor 四舍五入。

std::ceil 

四舍五入到最接近的整数

std::floor 

四舍五入到最接近的整数

std::round 

执行您期望的行为

如果这不能满足您的需要,请给出一个用例和编号!

std::round 可能就是您要找的人。但是,请记住它 returns 是一个浮点数。您可能想尝试 lroundllround 来获得 long 或 long long (C++ 11) 的结果。

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

您不需要在 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,大家可以自己验证一下。

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

std::trunc

这只是截去小数部分,即小数点后的数字,不管小数是多少。

std::ceil

这用于向上取整到最接近的整数值。

std::floor

这用于向下舍入到最接近的整数值。

std::round

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