Python数据处理(四舍五⼊、除法部分)
最近在改造之前的代码的过程中发现⼀直使⽤的除法都是“传统除法”,即对整数进⾏操作,结果的精度不准,正巧在看python核⼼编程,碰到这块,整理下。
关于除法
传统除法
对两个整数进⾏除的运算,同时结果会舍去⼩数部分,返回⼀个整数。但如果操作数之⼀是浮点型,则执⾏真正的除法。
真正的除法
返回真实的商,不管操作数的类似是整数还是浮点数
需要执⾏如下指令将传统除法转换为真正的除法
trunc函数怎么切除小数点后几位from __future__ import division
地板除
不管操作数为何种数值类型,总是舍去⼩数部分,返回数字序列中⽐真正的商⼩的最接近的数字,操作符“//”
举例:
>>> print "5/3传统除法:",5/3
5/3传统除法: 1
>>> from __future__ import division
>>> print "5/3真正的除法:",5/3
5/3真正的除法: 1.66666666667
>>> print "5/3地板除:",5.0//3
5/3地板除: 1.0
关于取整
常⽤的直接就是int(),但会发现是直接把⼩数部分去掉了的整数,有的时候不是我们要的,学习了下int,floor,round的区别
int() 直接截去⼩数部分(返回值为整型)
floor()得到的是最接近原数但⼩于原数的整型(返回值为浮点型)
round()得到最接近原数的整型(返回值为浮点型)
举例:
>>> import math
>>> int(3.67)
3
>>> math.floor(3.67)
3.0
>>> round(3.67)
4.0
如上只是针对python2.X版本的情况,python3.X版本已经有了变化。
如下为python3.3版本的对应变化
关于除法
传统除法
python3.3版本中的传统除法就是真正的除法,不管除数和被除数是否为整数,结果都是真实的商。
地板除
python3.3版本中保留了地板除。
举例:
>>> print ("传统除法:",1/2)
传统除法: 0.5
>>> print ("地板除:",1//2)
地板除: 0
关于取整
python3.3中的int()和floor()、round()的运算⽅式没变动,只是最终的返回结果都是整型举例:
>>> int(1.9)
1
>>> import math
>>> math.floor(1.2)
1
>>> type(math.floor(1.2))
<class 'int'>
>>> round(1.6)
2
>>> type(round(1.6))
<class 'int'>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论