首页 > 解决方案 > 如何比较 Python 中的 Fraction 对象?

问题描述

我有一个等于分数的用例。在 Python 中找到分数模块。

尝试使用类似的运算符<, == and >,它似乎有效。

from fractions import Fraction
print(Fraction(5,2) == Fraction(10,4)) # returns True
print(Fraction(1,3) > Fraction(2, 3))  # return False

这是进行比较的预期方式吗?

找不到文档中明确指定的任何内容。

有人可以确认这一点(带有提到它的来源的链接)吗?

标签: pythonpython-3.xcomparefractions

解决方案


从 Fraction 的文档中注意到“Fraction 类继承自抽象基类 numbers.Rational,并实现了该类的所有方法和操作。”

查看Rational 的文档,我们发现它“子类型 Real 并添加了分子和分母属性,这应该是最低限度的。”

对于Real,我们发现:

在 Complex 中,Real 添加了对实数起作用的操作。

简而言之,它们是:转换为 float、math.trunc()、round()、math.floor()、math.ceil()、divmod()、//、%、<、<=、> 和>=。

最后是复杂的

这种类型的子类描述复数并包括在内置复数类型上工作的操作。它们是:复数和布尔值、实数、imag、+、-、*、/、abs()、conjugate()、== 和 != 的转换。除了 - 和 != 之外的所有内容都是抽象的。

所以是的,这些操作已定义并记录在案。


推荐阅读