C语言中取整与取模与取余

在这里插入图片描述

文章目录

  • 一、取整
  • 二、取模
  • 三、取余
  • 四、取余与取模的区别
  • 总结


一、取整

C中提供了4中取整函数分别是:trunc,floor,ceil,round
函数的头文件都是。[0向取整也就是C中默认的取整方式。]
trunc向0取整
如下:

#include int main()
{printf("%lf\n", trunc(2.8));printf("%lf\n", trunc(-2.8));return 0;
}

结果如下:
在这里插入图片描述

示意图如下:
在这里插入图片描述

floor是向-∞取整。
如下


#include int main()
{/*printf("%lf\n", trunc(2.8));printf("%lf\n", trunc(-2.8));*/printf("%lf\n", floor(2.8));printf("%lf\n", floor(-2.8));return 0;
}

结果如下:
在这里插入图片描述

示意图如下:
在这里插入图片描述
ceil是向+∞取整。
如下:

#include int main()
{/*printf("%lf\n", trunc(2.8));printf("%lf\n", trunc(-2.8));*//*printf("%lf\n", floor(2.8));printf("%lf\n", floor(-2.8));*/printf("%lf\n", ceil(2.8));printf("%lf\n", ceil(-2.8));return 0;
}

结果如下:
在这里插入图片描述

示意图如下:
在这里插入图片描述round是四舍五入。
如下:

#include int main()
{/*printf("%lf\n", trunc(2.8));printf("%lf\n", trunc(-2.8));*//*printf("%lf\n", floor(2.8));printf("%lf\n", floor(-2.8));*//*printf("%lf\n", ceil(2.8));printf("%lf\n", ceil(-2.8));*/printf("%lf\n", round(2.8));printf("%lf\n", round(2.4));printf("%lf\n", round(-2.8));printf("%lf\n", round(-2.4));return 0;
}

结果如下:
在这里插入图片描述

二、取模

取模的概念(修正后):
如果a和b是两个自然数,d非0,可以证明存在两个唯一的整数q和r,满足a = q * d + r且 0 <= |r| < |d|。
其中q为商,r为余数。
对于r而言,其大小由q决定,而q的大小,由取整规则而定。
取模的取整规则商(q)向-∞取整
当我们知道这一概念后,就可以知道计算机是如何进行取模运算的。
那么让我们来进行10和-10的取模运算。
如下:
在这里插入图片描述
但C中真的是这样吗?

如下:

int main()
{printf("%d %d\n", 10 / 3,10 % 3);printf("%d %d\n", -10 / 3, -10 % 3);return 0;
}

结果如下:
在这里插入图片描述
我们发现计算机的结果与我们计算的结果不同,这是为什么?
在这里我们就要介绍取余

三、取余

取余的概念取模的概念没有太多的区别。
唯一的区别就是它们的取整方式不同
取余的取整方式:让商(q)向0取整
那么让我们在来进行 10和-10 的“ 取模运算 ”
如下:
在这里插入图片描述
在与计算机的结果对比:
在这里插入图片描述
我们发现在C中的“取模计算”好想就是等与取余计算。(只是在C语言中

四、取余与取模的区别

其它们的本质差别就是取整方式的不同
取余:商(q)向0取整。
取模:商(q)向-∞取整。
在此让我们在看向0取整向-∞取整的示意图
如下:
在这里插入图片描述

在这里插入图片描述
自此我们可以清晰的发现,
对于正数而言:向0取整向-∞取整方向相同,所以正数的取余与取模计算的r是相当的
对于负数而言:向0取整向-∞取整方向不相同,所以负数的取余与取模计算的r是不相当的


总结

以上就是我对取整,取余,取模的了解。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部