面试题
为什么在Python里1.1+2.2≠3.3?
--------------------------------
这个问题里面的关键,不在于Python,而是1.1里面的0.1
二进制世界是如何表示0.1的呢?
0.00011001100110011001100110011……0011 无限循环
你把全世界的硬盘都放在一起, 也存不下 0.1 的二进制小数.
Python 和 C 一样, 采用 IEEE 754 规范来存储浮点数,每个小数的存储(但是不是所有的), 都会伴有精度的丢失
0.1 在计算机存储中真正的数字是 0.00011001100110011001100110011001100110011001100110011001
0.2是
0.00110011001100110011001100110011001100110011001100110011
0.1+0.2=
0.01001100110011001100110011001100110011001100110011001100(二进制)
0.1+0.2=0.30000000000000004(十进制)
自己算一下
1.1+1.2=3.3000000000000003(十进制)