python计算器的奇葩问题
这个问题我记得还改进过一次啊,我们知道十进制小数是分母是10^n的分数,而浮点数用二进制表示,所以大部分情况下十进制的有限小数在二进制当中是无限循环小数,那么用有限的精度其实是表示不出来的,会近似取到最接近的一个有限小数上。以前Python显示这种数就会变成一堆99999或者000001,后来做了一个改进,在repr显示浮点数的时候,永远显示成能表示成这个二进制形式的最短的有限小数。但是你有加减的时候问题又不一样了,舍去的部分误差会累积,这样累加过之后误差可能会超过十进制真值一个有效数字位数,那结果就会变成不精确的。两个数相加的话,结果会不会超过容许误差范围,取决于两次舍入的方向是否一致、两次舍入的大小、还有两个相加的数的阶数是否一致等等。实际上熟悉数值计算的人都知道,当你使用浮点数的时候,你就再也不要想计算精确值这回事了,每一步运算基本上都会产生误差,对误差的分析(比如误差是否会累积,是否能够收敛)也是数值计算的一项基本功。
■网友
IEEE floating point几乎所有的编程语言都是这样的,自己没文化就不要随便说别人奇葩
■网友
因为二进制表示不了小数, 只能用趋近值 14. 浮点数算法:争议和限制
推荐阅读
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 零基础入门学习啥语言好
- Python3.4和3.5区别大么
- 学术造假|
- python 中 def_():...... return _有啥作用
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 30岁男,创业失败转行学python,是否很晚?也不好找工作?
- Python 的开发速度比 C#.net 或 Vb.net 更快吗?
