2004年04月14日 星期三 15:05
jackphil,您好! 应该是10.1可以精确表达为二进制浮点数的原因吧。 个人猜想,大学时的基础课已经都还给老师了……脸红…… ======== 2004-04-14 15:04:16 您在来信中写道: ======== 2.00...1我知是误差,10.1为什么好象没误差 ---------- Qiangning Hong 写道: 浮点数的二进制到十进制转换时会有误差 -----Original Message----- From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of jackphil Sent: Wednesday, April 14, 2004 2:11 PM To: python-chinese at lists.python.cn Subject: [python-chinese] 一个数字显示问题,只是好奇 大家好!以下是我刚学Python时,拿Python当桌面计算器使用:)时碰到的现象,一 直也没能理解: 在交互环境直接输入数字2.1回车(没有print),回显是2.1000000000000001,OK, 我大概知道是怎么回事,2.5就显示2.5, 这都OK,但10.1为什么显示10.1?一直到 15.1,都精确回显,接下去又有尾巴了...001,我试到30.1... Just for Fun! _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese = = = = = = = = = = = = = = = = = = = = = = 致 礼! 刘鑫 liux at gdcn.com 2004-04-14 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040414/bf94a983/attachment.htm
2004年04月14日 星期三 15:20
An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040414/271f7173/attachment.html
2004年04月14日 星期三 16:49
这是计算机表示数的时候无法绝对精确而造成的 比如 0.1 表示成2进制应该是 0.00011001100110011...... 成了无限循环小数,用有限的 bit 不可能绝对精确的表示这个数 计算机要在合适的精确度上把这个数截断才能参加运算 以下是相关数据的 double 型(VC6, x86, WinXP)表示 2.0 0000 0000 0000 4000 2.1 CCCD CCCC CCCC 4000 10.1 3333 3333 3333 4024 10 0000 0000 0000 4024 可以看到同样小数部分是 0.1,表示却全不相同。 在截断时候造成的误差是可能通过运算放大的,这就是由时候会发现在浮点数末位多1 或者少1的主要原因。 kongx -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040414/1a63410a/attachment.html
Zeuux © 2024
京ICP备05028076号