深度理解取整&取余&取模运算

在编程的学习当中,我们会经常行的使用这些操作在表达式计算,但是你在使用当中,你真的理解了吗???或者说是你完全学会使用了!!

在这篇博客当中,或许会出现错误,希望大家理解,目前还在学习当中,发现错误或不足之处请大家斧正!!

目录

一、取整

二、取余与取模


一、取整

先写一个简单的代码在引入:

C语言代码:在前面的代码中,我也解释过,为什么在定义变量中,int类型赋值浮点型不报错误,

在定义变量时,类型只是计算机用来判断内存开辟的空间大小,不会发生类型不匹配的原因,注意在取出数据的时候,如果不同类型之间的数据可能会发生数据截断,导致程序出错。

深度理解取整&取余&取模运算_第1张图片

我们看出,不管是负数还是整数,它们的结果都不满足我们所认知的四舍五入,那么他的计算原理是什么??我选择的这俩组数据一负一整,我们可以发现整数在变小,负数在变大,

那么我们的结论就出现了:它们都在向0靠齐,C语言中使用的便是向0靠齐的计算原理

取整原理1:向0靠齐

深度理解取整&取余&取模运算_第2张图片

 

取整原理2:向负无穷取整

深度理解取整&取余&取模运算_第3张图片

 

 

取整原理3:向正无穷取整

深度理解取整&取余&取模运算_第4张图片

 

取整原理4:四舍五入取整

小数位是<=4  舍去,小数位>=5加1

二、取余与取模

取模的定义:

如果ad是两个自然数,d非零,可以证明存在两个唯一的整数 q r,满足 a = q*d + r 0 ≤ r < d。其中,q 被称为商,r 被称为余数。

我们先写个例子:

C语言代码: 

深度理解取整&取余&取模运算_第5张图片
Python代码:
这是在python3版本中的测试
深度理解取整&取余&取模运算_第6张图片

 当除数与被除数都是正数时,它们的结果一致

我们在看一下出现负数的结果:我们可以发现在不同的编程语言中,负数的取模结果是不同的

C语言代码:

深度理解取整&取余&取模运算_第7张图片

 

 python代码

 它们的结果出现不一样了,我们观察取模的定义:两个唯一的整数 q r,满足 a = q*d + r 0 ≤ r < d。其中,q 被称为商,r 被称为余数。

在这里,我们就会引入一种新的概念 ,  正余数  负于数

所以,-10通过加法获得  有俩中方法一种是从小于-10方向靠近,一种是从大于10的方向靠近,商一定是除数的倍数所以我们的选择有  -12   与  -9:

深度理解取整&取余&取模运算_第8张图片

 



-10 = -12 + 2
-10 = -9 + -1 

这种现象出现的原因就是:在C语言中选取的负于数,在python中用的是正余数,从小于被除数方向与大于除数方向的选择

C语言中%的本质是取余(让商向0取整)

Python的%的本质是取模(让商向负无穷取整)

所以结论就是:

1.取余vs取模: 取余尽可能让商,进行向0取整。取模尽可能让商,向负无穷方向取整

2.参与取余的两个数据,如果同符号,取模等价于取余
3. 如果参与取余的两个数据符号不同,在 C 语言中 ( 或者其他采用向 0 取整的语言如: C++ Java) ,余数符号,与被 除数相同。(因为采用的向 0 取整)
4.浮点数 ( 或者整数相除 ) ,是有很多的取整方式的。

你可能感兴趣的:(C语言,c语言,python,开发语言)