关于python浮点数
>>> 1.0+2.0-3.0
0.0
>>> 1.1+2.2-3.3
4.440892098500626e-16
>>> 1.11+2.22-3.33
0.0
>>> 1.111+2.222-3.333
0.0
>>> 1.111+2.222-3.333
0.0
>>>
为什么第二个结果会输出这样一个很小的数呢,初学python,源码剖析还没看,跟python缓存机制有关吗?
[解决办法]
和python无关,是计算机处理浮点数的误差所致。下面是用c做的测试:
/tmp/ cat x.c
#include <stdio.h>
main () {
printf("%e\n", 1.1 + 2.2- 3.3);
}
/tmp/ gcc x.c
/tmp/ ./a.out
4.440892e-16