关于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;
}