python中浮点数用float表示,它与数学中实数的概念一致,简单理解为小数。

与整数一样,浮点数可以直接使用,看下面的代码。

>>> pai = 3.14
>>> type(pai)
float

浮点数的表现形式

在python中浮点数最常见的表示形式是a.b的格式,也可以表示为科学计算法。例如:

>>> a = 0.0  	# 注意浮点数0和整数0是不一样的
>>> b = 9.5e-2 	# 科学计算法
>>> c = .55 	# 整数部分为0可以省略
>>> d = 78.		# 小数部分为0也可以省略
>>> e = .0		# 所以浮点数0也可以这样写
>>> f = 0.		# 同样也可以这样写
>>> g = -0.1 	# 当然也有负数

我们可以看到浮点数其实可以表示所有的整数,python为何要同时提供两种数据类型呢?

因为计算机表示整数和浮点数的方式不同,相同操作整数要比浮点数快5-20倍。

浮点数的不准确性

python提供无限制且准确的整数计算,浮点数计算却是不精确的,例如:

>>> 0.2 + 0.1
0.30000000000000004

普通计算机只能提供15数字的准确性,浮点数在超过15位数字计算中产生的误差与计算机内部采用二进制运算有关。

import sys
print(sys.float_info.dig)
15

思考:

3.1415926535897924*1.23456789

的计算怎么准确?

浮点数和整数的相互转化

intfloat是python的内置函数,通过它们可以对浮点数类型和整数类型相互转化。

浮点数转化为整数

>>> a = 1.9
>>> b = int(a) # 通过int函数,提取浮点数的整数部分
>>> print(b, type(b))
1 <class 'float'>

整数转化为浮点数

>>> c = 2
>>> d = float(c)  # 通过float函数,将整数转化为小数部分为0的浮点数
>>> print(d, type(d))
2.0 <class 'float'>

复数

普通的计算很少用到复数,了解即可。

>>> a = 12.3 + 4j  # 复数
>>> print(a, type(a))
(12.3+4j) <class 'complex'>
>>> print(a.real)  # 打印实部
12.3
>>> print(a.imag)  # 打印虚部
4.0