- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我知道我可以使用:- 0.5.as_integer_ratio() ;并得到整数分数:1/2
但是,如果我有一个小数,例如:- 8.333333333333334;相当于:25/3;我使用 8.333333333333334.as_integer_ratio() ;我得到:(4691061961859793、562949953421312)
是否有一种功能/方法可以代替“干净”的 25/3?
最佳答案
如果您想要像 25/3 这样的分数的精确表示,您不应该首先使用 float 进行数学运算。您应该使用精确的有理类型,例如 fractions.Fraction
:
from fractions import Fraction
x = Fraction(75)
y = x/9
print(y)
输出:
25/3
如果您对 float 或十进制字符串感到困惑,可以将其转换为分数
并使用limit_denominator
。找到分母小的附近分数。默认情况下,“小”被视为 <= 1000000,但您可以配置限制。
print(Fraction(8.333333333333334).limit_denominator())
输出:
25/3
不过,从一开始就用有理算术处理所有事情几乎总是更好。
关于python - 是否有 : as_integer_ratio(), 的替代方法来获取 "cleaner"分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56127442/
近日,有记者提到float.as_integer_ratio() ,Python 2.6 中的新增功能,指出典型的浮点实现本质上是实数的有理逼近。出于好奇,我不得不尝试 π: >>> float.as
我知道我可以使用:- 0.5.as_integer_ratio() ;并得到整数分数:1/2 但是,如果我有一个小数,例如:- 8.333333333333334;相当于:25/3;我使用 8.333
我在做 question 33 of Project Euler在 Python 中,当我注意到一些我不明白的事情时。 问题的答案需要以最低通用术语给出的分母。所以我想我会使用 float.as_in
我是一名优秀的程序员,十分优秀!