我试图允许我的程序分别上下舍入一个数字。
例如,如果数字为3.6
,我的程序会将最接近的数字四舍五入为4,如果数字为3.4
,则会向下舍入为3。
我尝试使用ceil
库来获得3个项目的平均值。
results = ceil((marks1 + marks2 + marks3)/3)
但是,ceil
仅将数字向下舍入,但不会将数字向上滚动。
我偶然发现了一种算法
var roundedVal = Math.round(origVal*20)/20;
但我仍然无法找出某个问题的公式。
答案 0 :(得分:16)
std::ceil
向上舍入到最接近的整数
std::floor
向下舍入到最接近的整数
std::round
执行您期望的行为
如果这不能满足您的需求,请提供带有数字的用例!
答案 1 :(得分:5)
您需要的功能称为round,信不信由你。
ceil
向上舍入,顺便说一下。也就是说,到最接近的较大整数。 floor
向下舍入。
答案 2 :(得分:4)
std::round
可能是您正在寻找的人。但是,请记住它返回一个浮点数。您可能需要尝试使用lround
或llround
来获得长或长的结果(C ++ 11)。
答案 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
这将舍入到最接近的整数值,以最接近的整数为准,即可以向上舍入或向下舍入。