取整
默认情况下
// 丢弃小数点后面的值,结果为正数时可以认为是向下取整;结果为负数时取值结果和编译器相关
int c = (a / b);
除此之外还有两个函数可以实现向上取整或向下取整
// ceil 可以理解为向正方向取整。如 3.5 取整为 4. -3.5取整为 -3
double ceil(double x);
float ceilf(float x);
// floor 可以理解为向负方向取整。如 3.5 取整为 3. -3.5取整为 -4
double floor(double x);
float floorf(float x);
实现向上取整还可以使用如下方法
int a = 10, b = 3, c = 0;
c = (a + b - 1) / b;
向下取整
float b = -10.5;
bool positive = b > 0;
if (!positive) {
b *= (-1.0f);
}
int c = (int)b;
c = positive ? c : ((c + 1) * (-1));
四舍五入
float b = 10;
float a = 3;
int c = (int)((b / a) + 0.5);
使用上面的方法可以实现更灵活的进位方式
// 实现逢 3 进位
float b = 10;
float a = 3;
int c = (int)((b / a) + 0.7);
// 实现逢 6 进位
float b = 10;
float a = 3;
int c = (int)((b / a) + 0.4);