Python论坛  - 讨论区

标题:Re: Re: [python-chinese] 一个数字显示问题,只是好奇

2004年04月14日 星期三 15:05

刘鑫 liux at gdcn.com
Wed Apr 14 15:05:36 HKT 2004

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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年04月14日 星期三 15:20

jackphil jackphilcn at yahoo.com.cn
Wed Apr 14 15:20:09 HKT 2004

An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040414/271f7173/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年04月14日 星期三 16:49

kongx kongx at necas.nec.com.cn
Wed Apr 14 16:49:50 HKT 2004

这是计算机表示数的时候无法绝对精确而造成的
比如
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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号