请教关于python溢出分析问题,python溢出分析问题,在微博上看到七牛官方微博
请教关于python溢出分析问题,python溢出分析问题,在微博上看到七牛官方微博
在微博上看到七牛官方微博发的一个图片,自己试了试果真如此。看图说话(见下图),谁能解释下呀,或者给个思路从哪里入手分析这个问题。
(我知道是溢出,但是想知道具体是怎么溢出的。)
简单解析:这是浮点数的表示方式。浮点数由符号位+底数+指数组成,这决定了每一个浮点数都是近似表示的。
float 双精度浮点数不能精确的表示有些十进制的小数。
In [1]: 0.2 + 0.1 == 0.3Out[1]: FalseIn [2]: 0.2 + 0.1Out[2]: 0.30000000000000004
如果要精确计算,可以试用Decimal
In [1]: from decimal import DecimalIn [2]: Decimal('0.2') + Decimal('0.1')Out[2]: Decimal('0.3')
我目前正在学PYTHON,MIT的6.00有一课是专门讲这个的,解释的非常清楚。在PYTHON里,或者任保一种现代的编程语言里,float的表示方式(在64位的系统中),1位符号位,11位指数,52位底数。有些数是可以用二进制准确表示的,比如1/4,1/8(0.001),1/16。有些数是无法用二进制准确表示的1/10,PYTHON只能尽可能近似的表示,但这里面有一个位数的限制,只能表示17位的10进制数。而PYTHON会通过一个内建的REPR命令把内部表达式转化为str,然后display。
还有一点,print这个命令会默认自动的rounds
编橙之家文章,
相关内容
- raw_input可以同时获得两个值吗?python 2.7环境,raw_inputp
- Python import写法有什么要求吗?,pythonimport,文件目录如下
- python yield生成器send发送数据问题,pythonyield,def countdo
- 哪里有Python面试题库集合可以练习,python面试题库集合
- Django可以建立指向自己model的外键吗?,djangomodel,如题,
- python list合并数据内有符号怎么处理,pythonlist,现在遇到
- 想用python调用windows录音机保存文件需要怎么做,,pyth
- 求教关于支付宝与银行卡自动转帐设置及安全性的问题
- 请问tornado异步下redirect问题,tornadoredirect,我本想实现一
- 求python大牛帮看看ctypes.string_at的问题,,代码我也放在
评论关闭