大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
python中取余%
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站建设、网站设计、忻城网络推广、微信小程序开发、忻城网络营销、忻城企业策划、忻城品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供忻城建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
python中的整除 // 中的坑
PYTHON中三种取整函数(// int round)的区别
当Python的取余操作涉及负数时,会产生很神奇的现象:
经过百度找到[1],得到取余操作为:
但是这并不能解释为什么会有两种绝对值,于是又去搜了一下整除操作
在经过百度找到[2]与[3],得知Python中的几种取整操作:
对于负数表现为下:
将 % 之前的数称为 被取余数 ,之后的数称为 取余数 ,只考虑 除不尽 时,则有:
性质一:
性质二:
设
分别考虑 a 与 n 同号或异号时,均有:
故:
沿用性质二,设
且有
则有
(除不尽情况下)
有了以上结论,我们就可以口算得到结果:
有了以上的值,再根据 的符号确定正负
python向上取整
相关推荐:《Python教程》
方法:
Python match.ceil函数
ceil(x)函数是向上取整,即取大于等于x的最接近整数。
import math
math.ceil(float(1)/2)
是利用原来的向下取整的机制如果原来是
实际上Python的round()函数可以接受两个参数round(value,ndigits),第一个参数为实际操作数,第二个参数为实际保留几位,如果第二个参数不填,则默认保留到整数位。
Python3.X对于浮点数默认的是提供17位数字的精度。
结果是 -4
对正数是向下取整,对负数是向上取整。
学python的一个缺点就是对数据类型的基础理解比较少,
你可以用二进制来理解下,举一个有符号的二进制为例子:
对于无符号的 0b000~0b111 来说分别有
0b000 = 0;
0b001 = 1;
0b010 = 2;
0b011 = 3;
0b100 = 4;
0b101 = 5;
0b110 = 6;
0b111 = 7;
比如 uint 就是 int 的无符号形式。
当相同数据为有符号形式时变为:
0b000 = 0;
0b001 = 1;
0b010 = 2;
0b011 = 3;
0b100 = -4;
0b101 = -3;
0b110 = -2;
0b111 = -1;
(参考原码、反码、补码)
所以根据这个规则,对float,double等数字是同理,在floor时将有符号位进行省略,如以下位运算():
0b000 1 = 0b000
0b001 1 = 0b000
有 0-0 和 1 - 0
0b010 1 = 0b001
0b011 1 = 0b001
有 2- 1 和 3 - 1
按照这个丢失精度的方法计算负数呢?
0b111 1 = 0b111
0b110 1 = 0b111
0b101 1 = 0b110
0b100 1 = 0b110
可知:
-1 - -1 与 -2 - -1
-3 - -2 与 -4 - -2
所以对负数的 floor 会向上取整,因为丢失精度的方法是直接根据小数点截断的。
向下取整
int(3.75)
四舍五入
round(3.75)
向上取整
math.ceil(3.75)
分离整数和小数
math.modf(3.75)
此时我们可以用built-in function int() 函数
用built-in function round() 函数
此时我们要用到模块math中的 ceil() 方法
此时我们要用到模块math中的 modf() 方法