python基础篇之数字类型(上)
a=1112234579121621 / 11235813213455
print(a)
98.99012719343793
a=9 / 3
print(a)
3.0
python的浮点数会出现小数部分有很多位的情况。
比如:
a=0.1
b=0.2
c=a+b
print(c)
0.30000000000000004
大家可以看到,我们的0.1+0.2本来就是=0.3的简单问题,为什么python会给我们运算出来一大堆东西呢?
有的有的朋友就会问,这是不是一个python存在的bug呢?
emmm,大家可以想想,如果说简单的一个数字运算救出bug的话,那么python凭什么会成为世界第一语言呢?
其实啊,python的浮点数运算之所以存在误差,是因为python语言和C语言一样,都是采用IEEE754的标准来存储浮点数的,所以呢python与我们老语言C一样,也会产生精度上的误差。
由于浮点数不是绝对的精确,所以我们那浮点数来作比较的时候呢,就比较的担心了。
我们可以针对于python的浮点数的运算来做一个判断,
比如:
if(0.3 == 0.1+0.2):
print("相等")
else:print("不相等")
不相等
如果按照我们人类的运算逻辑思路的话,0.3=0.1+0.2是毫无疑问的,但是大家可以看见python呢却认为这样是不对的。
所以我们根据上面的0.1+0.2=0.30000000000000004情况我们可以再一次来验证一下:
比如:
if(0.30000000000000004 == 0.1+0.2):
print("相等")
else:print("不相等")
相等
这样python呢就认为运算结果是对的。
但是,大家都知道,但凡是python所触及到的行业,都是一些高级的智能领域的行业,就算是小数点后好几千位有误差,都是不行的。
比如,人类在外月球发射的火箭,如果存在一丁点的误差就有可能导致火箭发射到了别的星球。所以这样的运算误差是绝对不允许的!
所以呢,python为了解决这一运算误差,引入了一个decimal的模块!
decimal模块的使用方法:
首先引入decimal模块:
import decimal
a = decimal.Decimal('0.1')
b = decimal.Decimal('0.2')
c = a+b
print(c)
0.3
哎?这时候大家看到了就是我们人类的逻辑思路运算出来的结果了(当然类和模块的知识这里只是简单的引入一下来解决我们浮点数的运算问题,类和模块以后还会给大家讲到,这里只需要大家知道这个decimal模块可以帮助我们来消除浮点数运算的误差就可以了)。
那么对于我们数学中的科学计数法,python的浮点数也是有规则的。
比如:
a = 0.00005
print(a)
5e-05
复数大家都知道,包括一个实部和一个虚部,需要注意的是复数在python中也是由浮点数的形式来存在的。
比如:
x = 1 + 2j
print(x.real)
print(x.imag)
1就是实部,2j就是虚部;
我们可以分别用x.real和x.imag来获取我们的实部和虚部的值。
运算结果:
1.0
2.0
大家可以看到,我们获取到的实部与虚部的值,python都是以浮点数的形式呈现的!
- 点赞
- 收藏
- 关注作者
评论(0)