2016-08-04 73 views

回答

2

我会说,如果其中一个参数是浮动,它总是会强制浮动,因为float是最常见的数字类型。所以如果你用浮点数和其他数字解释器进行一些操作(在你的情况下乘法),可以肯定它可以将其他数字转换为浮点数(不管它是int,Fraction还是Bool)而不丢失任何信息,但它不能以其他方式做到这一点。

这是链接(https://docs.python.org/2.4/lib/typesnumeric.html) 它暗示了我明显的东西,我忘了。复数比Float更通用。所以,如果你会尝试乘法浮动复杂。你会变得复杂。

“Python完全支持混合算术:当二进制算术运算符的操作数具有不同的数值类型时,具有”窄“类型的操作数会扩展到另一个操作数,其中纯整数比长整数窄比浮点窄比比较复杂,比较混合类型的数字使用相同的规则。“

+0

谢谢你的回答。我想知道你能否指出我的任何相关文件。谢谢 – galaxyan

+0

编辑答案,提供链接和报价 –

-1

没有,它的工作原理是因为分数类实现用于与其他对象(浮在你的情况下)定义了一个乘法的结果__mul__(可能__rmul__)方法。

这就是所谓的操作符重载。

编辑:我不明白为什么我downvoted。根据你的例子,答案是不,你不总是得到一个浮动,它取决于其他对象

例如,可以在Python馏分源代码中看到的__mul____rmul__实现:https://hg.python.org/cpython/file/tip/Lib/fractions.py#l421且确实的计算功能:https://hg.python.org/cpython/file/tip/Lib/fractions.py#l377

相关问题