[深入浅出C语言]理解取整、取余和取模

本文探讨了C语言中的取整、取余和取模运算,包括向0取整、floor、ceil和round等方法,并通过实例分析了C语言与Python中负数取模运算的区别,揭示了取模运算的本质与符号的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于C语言的取模运算,也许你只了解正数取模,而从未接触过负数取模,本文就来分享一波C语言取整、取模和取余的个人学习经验与心得,希望对你有所帮助。

笔者水平有限,难免存在纰漏,欢迎指正交流。

关于取整

你真的了解取整么?那你知道有几种取整方式吗?

除了最常见的向0取整以外其实是是有很多的取整方式的。

向0取整

C语言中整数除法就是遵循这一取整方式。下面代码中浮点数字面量拷贝赋值时发生了隐式类型转换,向0取整。

#include<stdio.h>
int main()
{
    int i = -2.9;
    int j = 2.9;
    printf("%d\n", i); //结果是-2
    printf("%d\n", j); //结果是2
    
    return 0;
}

 有一个trunc取整函数(C99),同作用。

​比如:

#include<math.h>
#include<stdio.h>
int main()
{
    int i = -2.9;
    int j = 2.9;
    printf("%f\n", trunc(i)); //结果是-2
    printf("%f\n", trunc(j)); //结果是2
    
    return 0;
}

floor取整

本质是向-∞取整,注意输出格式要不然看不到结果,比如:

#include <stdio.h>
#include <math.h> //因为使用了floor函数,需要添加该头文件
int main()
{
    printf("%.1f\n", floor(-2.9)); //结果是-3
    printf("%.1f\n", floor(-2.1)); //结果是-3
    printf("%.1f\n", floor(2.9)); //结果是2
    printf("%.1f\n", floor(2.1)); //结果是2
    
    return 0;
}

ceil取整

本质是向+∞取整,注意输出格式要不然看不到结果,比如:

#include <stdio.h>
#include <math.h>
int main()
{
    printf("%.1f\n", ceil(-2.9)); //结果是-2
    printf("%.1f\n", ceil(-2.1)); //结果是-2
    printf("%.1f\n", ceil(2.9)); //结果是3
    printf("%.1f\n", ceil(2.1)); //结果是3
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值