引言
在python二级考试中,有这样的题目:
print(0.1 + 0.2 == 0.3)
答案是False
对于初学计算机语言的人来说可能很奇怪,难道0.1+0.2不是等于0.3?当然也不是,但这就涉及到计算机语言的浮点型底层存储。
个位小数的加减法失真
先编写代码看看个位小数的加减法
for i in range(1,10):
for m in range(1,i+1):
a='0.{}'.format(i)
b='0.{}'.format(m)
c=eval(a)+eval(b)
print('{}+{}={}'.format(a,b,c),end=' ')
print('')
for i in range(2,10):
for m in range(1,i):
a='0.{}'.format(i)
b='0.{}'.format(m)
c=eval(a)-eval(b)
print('{}-{}={}'.format(a,b,c),end=' ')
print('')
输出结果为
可以看到仅仅是个位小数的加减法,都有如此多的失真