python浮点除法和整数除法_14. Python整数相除的设计问题

本文探讨了Python创始人Guido van Rossum在设计Python整数除法时的决策,以及这一设计如何成为早期失误。在Python早期版本中,整数相除返回整数结果,这导致了一些未预期的计算误差。Guido反思了这一决策,并在后续版本中引入了地板除(//)和浮点除(/),以及`from future import division`来改变默认行为。在Python 3中,整数除法默认返回浮点数,修正了这一设计问题。
摘要由CSDN通过智能技术生成
0e40649eeaccdfe66872e03755afdbd0.png

本系列文章译自Python之父 Guido van Rossum 的系列博客“The History of Python”。这个博客系列对我们理解Python及其演变很有帮助,经Guido同意,在这里翻译推荐给大家,希望大家喜欢,也请大家多多指教!


1

Python 对整数相除的处理是一个早期失误导致严重后果的例子。

如之前博文所说,在开发 Python 时,我抛弃了 ABC 对数字的处理方法,比如说,在 ABC 中,如果两个整数相除,会返回一个精确的有理数,而在 Python 中,则会返回一个整数。

根据我的经验,ABC 使用有理数来处理整数相除的方法并不好。一个典型的例子是,一些常见场景中的简单运算(比如计算个税),却会计算小数点后数千位,无疑会让程序运行得非常慢。这个问题解决起来并不难,用户只需要加上代表不精确的 0 就可以了——但这个方案是反直觉的,而且这个问题对初学者来说很难 debug 。

因此,在 Python 中,我借用了 C 语言中的数字模型。在 C 语言中,有不同精度的整型与浮点数,我选择其中的长整型(至少32位)作为 Python 中的整型,而用双精度浮点数作为 Python 中的浮点数。同时,我还为 Python 增加了任意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值