上QQ阅读APP看书,第一时间看更新
2.8.2 浮点数的常见运算
周末了,我去菜场买菜。
我买了一斤肉,20元钱,20是一个整型数,即int类型。
我又换了个摊位买了一把青菜,9.5元,9.5是一个浮点数,float类型。
老板说:“给你一把葱,给10元吧。”老板把浮点数往上取整,做了round up的运算。
我说:“零头就算了,给9元吧。”我把浮点数往下取整了,四舍五也舍,做了floor的运算。
浮点数类型用于表示小数(有限小数)。除了加减乘除之外,浮点数最常见的操作就是各种取整,以及根据指定的精确度来取近似值。
以下是上述场景中几个典型的浮点数,我们可以用type函数来确认它们的类型。
>>> type(3.14) <class 'float'> >>> type(1.0) <class 'float'> >>> type(20.00) <class 'float'> >>> type(-0.009) <class 'float'>
取浮点数的整数部分,用int函数。
>>> int(3.14) 3 >>> int(5.5) 5 >>> int(-3.9123) -3
四舍五入到整数位,用round函数。
>>> round(3.14) 3 >>> round(5.5) 6 >>> round(0.1) 0 >>> round(-0.9) -1
四舍五入到指定的小数点位数,用带参数的round函数。
>>> PI 3.14159265358979 >>> round(PI) 3 >>> round(PI, 2) 3.14 >>> round(PI, 4) 3.1416
请留意round方法以下的特别行为:
>>> round(4.5) 4
round(4.5)的结果是4,看起来round方法的默认行为是向下取整,这样的话,round(5.5)的结果应该是5,我们来验证一下。
>>> round(5.5) 6
这个结果看起来很难理解,round方法的文档里其实对这个设计是有描述的:如果待取整的值正好处于中间位置,结果取偶数值。
比如,5.5与5和6的差都是0.5,正好处于二者中间,在这种情况下,round结果是取5和6二者中的偶数,也就是6;4.5与4和5的差都是0.5,在这种情况下,round结果是取4和5二者中的偶数,也就是4。
上取整用ceil函数:
>>> import math >>> math.ceil(0.0001) 1 >>> math.ceil(0.99) 1 >>> math.ceil(3.14) 4 >>> math.ceil(-4.1) -4 >>> math.ceil(-4.9) -4
下取整用floor函数:
>>> import math >>> math.floor(-4.1) -5 >>> math.floor(-4.9) -5 >>> math.floor(0.0001) 0 >>> math.ceil(0.99) 1 >>> math.ceil(9.0) 9