数字类型
Python中的数字类型有三种:整数,浮点数和复数。
整数:整数的的概念就不用说了,像1,2,99999
都是整数。
浮点数:可以理解为带小数点的数,如0.1,23.3432,10.0
都是浮点数。
复数:复数这个概念我们应该是在高中的时候接触到的,复数由两部分组成实部+虚部,如2+3j
等,Python中虚部使用j
表示的。
在之前介绍运算符的文章中,我有将常用的一些运算符都给列出来,感兴趣的朋友可以前去查看,传送门。同时为了方便说明今天的实例,我将一些用于数字运算的符号在下面列出:
操作 | 结果 |
---|---|
x + y | x加y的结果 |
x - y | x减y的结果 |
x * y | x乘以y的结果 |
x / y | x除以y的结果 |
x // y | x除以y的结果(地板除法) |
x % y | x除以y的余数 |
- x | x的相反数 |
+ x | x本身 |
x ** y | 计算x的y次方 |
pow(x, y) | 计算x的y次方 |
abs(x) | 返回x的绝对值,对于复数返回它的模 |
int(x) | 将x转换成整数 |
flaot(x) | 将x转换成浮点数 |
complex(re, im) | 返回一个复数,re是实部,im是虚部 |
c.conjugate() | 返回c的共轭复数 |
divmod(x, y) | 返回(x // y,x % y) |
实例分析
在IDLE的交互模式下进行测试:
>>> 2 + 3
5
>>> 6 - 3
3
>>> 4 * 3
12
>>> 6 / 2
3.0
>>> 6 // 2
3
>>> 6 % 2
0
>>> - 23
-23
>>> + 34
34
>>> 4 ** 2
16
从结果中看到:6 / 2 = 3.0
,这是为什么?明明是整数相除,为什么结果是一个浮点数,这其实是Python内部规定的,即使两个数能够整除结果依然是一个浮点数,那我如果想要一个整数的结果应该怎么办?这时候Python提供了另外一种除法即地板除法。
地板除法:符号是两个斜杠//
,此时6 // 2 = 3
。为了详细说明地板除法我们需要在测试几个例子:
>>> 3 // 2
1
>>> -3 // 2
-2
地板除法遵循向下取整的原则,取比目标结果小的最大整数,是不会进行四舍五入的,所以3除以2
应该等于1.5
的结果变成了1
,而-3除以2
的结果应该等于-1.5
的,会取比-1.5
小的最小整数,所以是-2
。
接下来介绍表格中后面几个Python的内建函数(BIF),即built in function。
pow()
函数是计算平方的,作用和**
几乎一样,但是它还可以传递第三个参数:
>>> pow(4, 2)
16
>>> 4 ** 2
16
>>> pow(4, 2, 5)
1
在传入第三个参数后pow()
函数返回的是:4 ** 2 % 5
的值,即16
除以5
的余数1
。
abs()
函数则是返回参数的绝对值,如果参数是复数,则返回它的模:
>>> abs(-123)
123
>>> abs(1 + 2j)
2.23606797749979
复数模的计算方法是:对实部的平方加上虚部的平方的和开平方。
对于后面几个内建函数这里一并进行讨论:
>>> int(123.1)
123
>>> int(123.999)
123
>>> float(123)
123.0
>>> float('123')
123.0
>>> complex(23, 34)
(23+34j)
>>> 1 + 2j.conjugate()
(1-2j)
>>> divmod(7, 2)
(3, 1)
-
使用
int()
函数取整是直接截断小数部分,而仅保留整数部分,不遵循四舍五入的原则的。 -
float()
函数与int()
函数一样可以怼数字和字符串进行处理,需要注意的是虽然123
和123.0
在数值上是相等的,但是在Python的确实不同的,因为Python对于整数和浮点数的存放方法不一样。 -
divmod(x, y)
函数返回的分别是x
除以y
的商,和余数。需要注意的是,它并不会改变x
和y
的值:>>> divmod(7, 2) (3, 1) >>> x = 7 >>> y = 2 >>> divmod(x, y) (3, 1) >>> x 7 >>> y 2
小结
以上就是关于Python数字类型的一些简要总结,由于本人也还在学习中,如有不对还请指出,欢迎大家一起交流。