python之数字类型
1 python数字类型简介
Python 有三种不同的数字类型,分别是:整数、浮点数和复数。
2 整数
Python 的整数长度是不受限制的,也就是说它是有无限大的精度。所以,可以随时随地的进行大数运算:
>>> 1112234579121621 / 11235813213455
98.99012719343793
3 浮点数
由于浮点数在计算机中的存储是存在 “误差” 的,所以有时候可能会闹出一些 “BUG”:
>>> 0.1 + 0.2
0.30000000000000004
由于浮点数并不是 100% 精确的,所以我们拿浮点数来做比较就要特别小心了:
>>> 0.3 == 0.1 + 0.2
False
4 精确计算浮点数
可以利用 decimal
模块来实现浮点数的精确计算。
>>> import decimal
>>> a = decimal.Decimal('0.1')
>>> b = decimal.Decimal('0.2')
>>> print(a + b)
0.3
5 E 记法
E 记法也就是科学计数法,用于表示一些比较极端的数。
>>> x = 0.00005
>>> x
5e-05
6 复数
复数包含了一个实部和一个虚部:
>>> x = 1 + 2j
>>> x
(1+2j)
它们都是以浮点数的形式存放的,如果将一个复数赋值给一个变量 x,则可以通过 x.real
访问该复数的实部,x.imag
访问其虚部:
>>> x = 1 + 2j
>>> x.real
1.0
>>> x.imag
2.0
7 数字运算
Python 支持的数字运算如下:
8 四则运算
>>> 1 + 2
3
>>> 1 - 2
-1
>>> 1 * 2
2
>>> 1 / 2
0.5
9 地板除
双斜杠(//)表示一种特殊的除法 —— 地板除
地板除原理是取比目标结果小的最大整数:
>>> 3 // 2
1
>>> -3 // 2
-2
地板除的结果乘以除数 + 余数 = 被除数:
x == (x // y) * y + (x % y)
10 取余
百分号(%)用于求两数相除的余数,如果能够整除,则余数为 0:
>>> 3 % 2
1
>>> 6 % 2
0
11 divmod() 函数
Python 有个内置函数叫 divmod()
,它的作用就是同时求出两参数地板除的结果和余数:
>>> divmod(3, 2)
(1, 1)
>>> divmod(-3, 2)
(-2, 1)
12 abs() 函数
abs()
函数的作用是返回指定数值的绝对值:
>>> x = -520
>>> abs(x)
520
>>> y = -3.14
>>> abs(y)
3.14
如果传入的是一个复数,abs()
函数返回的结果就是复数的模:
>>> z = 3 + 4j
>>> abs(z)
5.0
13 int(),float() 和 complex() 函数
int()
函数是将指定的值转换成整数,比如我们传入一个字符串 ‘520’,那么得到结果就是一个整数 520:
>>> int('520')
520
不过如果参数是一个浮点数,那么就要注意了,因为它得到的将是一个截掉小数的整数:
>>> int(3.14)
3
>>> int(9.99)
9
注意:它是直接截取整数部分,扔掉小数部分,而不是四舍五入。
同样的道理,float()
和 complex()
函数是将指定的值转换成浮点数和复数。
14 pow() 函数和幂运算符(**)
通常情况下,pow()
函数和幂运算符(**)
这两个实现的效果是等价的:
>>> pow(2, 3)
8
>>> 2 ** 3
8
>>> pow(2, -3)
0.125
>>> 2 ** -3
0.125
不过,pow() 函数还留有一手,它支持第 3 个参数。
>>> pow(2, 3, 5)
3
相当于:
>>> 2 ** 3 % 5
3