关于python浮点数

此去依然 2013-08-28 06:26:21
>>> 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缓存机制有关吗?
...全文
135 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2013-08-29
  • 打赏
  • 举报
回复
计算机内部只有二进制整数,所有浮点数都是用它做位运算“模拟”出来的,只有精确而没有准确 精确度跟位有关,0.0其实也是0.00000000...,只是这0的个数也超出了位的个数 google "位运算 浮点数" http://zh.wikipedia.org/wiki/%E6%B5%AE%E7%82%B9%E6%95%B0
jeky_zhang2013 2013-08-28
  • 打赏
  • 举报
回复
前段时间看了下计算机移位方面的东西,涉及计算机支持指令,挺复杂的
panghuhu250 2013-08-28
  • 打赏
  • 举报
回复
和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

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧