Python论坛  - 讨论区

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

2004年04月14日 星期三 14:10

jackphil jackphil at sohu.com
Wed Apr 14 14:10:46 HKT 2004

大家好!以下是我刚学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!





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

2004年04月14日 星期三 14:36

Qiangning Hong lucifer at tsinghua.org.cn
Wed Apr 14 14:36:04 HKT 2004

浮点数的二进制到十进制转换时会有误差

-----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

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

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

jackphil jackphilcn at yahoo.com.cn
Wed Apr 14 15:04:16 HKT 2004

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

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

2004年04月15日 星期四 23:43

CHEN Guang (Oliver) oliver_guang_chen at yahoo.com.cn
Thu Apr 15 23:43:05 HKT 2004

Hello, Qiangning Hong
离散数学中讲究“有效数字”的位数, 10.1000000000000001
比 2.1000000000000001 多了一位有效数字,如果在 Python
默认的十进制计数中最多有 17
位有效数字,那么10.1000000000000001 只好四舍五入成
10.1 了。
至于 16.1 与 15.1 之间的变化是由于 浮点运算硬件 80x87
采用 16 进制“科学计数法”来表示浮点数 ......

 --- jackphil <jackphilcn at yahoo.com.cn> 的正文:
---------------------------------
    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 jackphilSent: Wednesday, April 14, 2004
2:11 PMTo: python-chinese at lists.python.cnSubject:
[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
listpython-chinese at lists.python.cnhttp://python.cn/mailman/listinfo/python-chinese
 
  

---------------------------------
_______________________________________________python-chinese
listpython-chinese at lists.python.cnhttp://python.cn/mailman/listinfo/python-chinese
 

> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
>  

_________________________________________________________
Do You Yahoo!? 
惠普TT游戏剧,玩游戏,中大奖!
http://cn.rd.yahoo.com/mail_cn/tag/SIG=1402c0to2/**http%3A%2F%2Fhp.allyes.com%2Flaserjet%2Fgamestory%2Findex.html%3Fjumpid%3Dex_hphqapcn_MongooseLJ1010%2F201073CN407016%2FYahoo


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

2004年04月15日 星期四 23:51

CHEN Guang (Oliver) oliver_guang_chen at yahoo.com.cn
Thu Apr 15 23:51:19 HKT 2004

对不起,搞错了,是发给 jackphil 的
 --- "CHEN Guang (Oliver)"
<oliver_guang_chen at yahoo.com.cn> 的正文:> Hello,
Qiangning Hong
> 离散数学中讲究“有效数字”的位数,
> 10.1000000000000001
> 比 2.1000000000000001 多了一位有效数字,如果在
> Python
> 默认的十进制计数中最多有 17
> 位有效数字,那么10.1000000000000001 只好四舍五入成
> 10.1 了。
> 至于 16.1 与 15.1 之间的变化是由于 浮点运算硬件
> 80x87
> 采用 16 进制“科学计数法”来表示浮点数 ......
> 
>  --- jackphil <jackphilcn at yahoo.com.cn> 的正文:
> ---------------------------------
>     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 jackphilSent: Wednesday, April 14, 2004
> 2:11 PMTo: python-chinese at lists.python.cnSubject:
> [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
>
listpython-chinese at lists.python.cnhttp://python.cn/mailman/listinfo/python-chinese
>  
>   
> 
> ---------------------------------
>
_______________________________________________python-chinese
>
listpython-chinese at lists.python.cnhttp://python.cn/mailman/listinfo/python-chinese
>  
> 
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >  
> 
>
_________________________________________________________
> Do You Yahoo!? 
> 惠普TT游戏剧,玩游戏,中大奖!
>
http://cn.rd.yahoo.com/mail_cn/tag/SIG=1402c0to2/**http%3A%2F%2Fhp.allyes.com%2Flaserjet%2Fgamestory%2Findex.html%3Fjumpid%3Dex_hphqapcn_MongooseLJ1010%2F201073CN407016%2FYahoo
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese 

_________________________________________________________
Do You Yahoo!? 
惠普TT游戏剧,玩游戏,中大奖!
http://cn.rd.yahoo.com/mail_cn/tag/SIG=1402c0to2/**http%3A%2F%2Fhp.allyes.com%2Flaserjet%2Fgamestory%2Findex.html%3Fjumpid%3Dex_hphqapcn_MongooseLJ1010%2F201073CN407016%2FYahoo


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

2004年04月16日 星期五 17:02

jackphil jackphilcn at yahoo.com.cn
Fri Apr 16 17:02:49 HKT 2004

Oliver你好:
"80x87采用 16 进制“科学计数法”来表示浮点数"──不太好理解,计算机内部怎么
会有16进制?都是0和1吧
----
CHEN Guang (Oliver) 写道:

>Hello, Qiangning Hong
>离散数学中讲究“有效数字”的位数, 10.1000000000000001
>比 2.1000000000000001 多了一位有效数字,如果在 Python
>默认的十进制计数中最多有 17
>位有效数字,那么10.1000000000000001 只好四舍五入成
>10.1 了。
>至于 16.1 与 15.1 之间的变化是由于 浮点运算硬件 80x87
>采用 16 进制“科学计数法”来表示浮点数 ......
>
> --- jackphil <jackphilcn at yahoo.com.cn> 的正文:
>  
>


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

2004年04月17日 星期六 11:18

CHEN Guang (Oliver) oliver_guang_chen at yahoo.com.cn
Sat Apr 17 11:18:38 HKT 2004

Hello jackphil:
   
你说得对,准确地说是二进制的。只是由于二进制与16进制有着简单的对应关系,并且16进制的两位数正好与一个字节对应,汇编语言编程中才使用16进制。
   
深究起来,二进制科学计数法与16进制科学计数法是有区别的,前者在满2、4、8、16、32、64……时都发生小数点的移动,而后者仅在满16、256、4096……时才发生小数点的移动。
事实上,80x87数学协处理器中使用的是前者。
0.1这样的在二进制中表示为无限循环小数,每逢整数部分满2、4、8、16、32、64……小数部分都会发生变化,只不过有时这种变化转换成十进制并进行四舍五入后表现不出来而已。
   
同时由于转换成十进制后对有效数字位数的要求,每当满10、100、1000时小数部分也可能发生变化。当然这种变化用四舍五入原理很容易解释的。

 --- jackphil <jackphilcn at yahoo.com.cn> 的正文:>
Oliver你好:
> "80x87采用 16
>
进制“科学计数法”来表示浮点数"──不太好理解,计算机内部怎么
> 会有16进制?都是0和1吧
> ----
> CHEN Guang (Oliver) 写道:
> 
> >Hello, Qiangning Hong
> >离散数学中讲究“有效数字”的位数,
> 10.1000000000000001
> >比 2.1000000000000001 多了一位有效数字,如果在
> Python
> >默认的十进制计数中最多有 17
> >位有效数字,那么10.1000000000000001 只好四舍五入成
> >10.1 了。
> >至于 16.1 与 15.1 之间的变化是由于 浮点运算硬件
> 80x87
> >采用 16 进制“科学计数法”来表示浮点数 ......
> >
> > --- jackphil <jackphilcn at yahoo.com.cn> 的正文:
> >  
> >
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese 

_________________________________________________________
Do You Yahoo!? 
惠普TT游戏剧,玩游戏,中大奖!
http://cn.rd.yahoo.com/mail_cn/tag/SIG=1402c0to2/**http%3A%2F%2Fhp.allyes.com%2Flaserjet%2Fgamestory%2Findex.html%3Fjumpid%3Dex_hphqapcn_MongooseLJ1010%2F201073CN407016%2FYahoo


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

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

    你的回复:

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

    Zeuux © 2024

    京ICP备05028076号