C 语言数值取整

取整

默认情况下

// 丢弃小数点后面的值,结果为正数时可以认为是向下取整;结果为负数时取值结果和编译器相关
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);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值