gpt4 book ai didi

python - 是否有 : as_integer_ratio(), 的替代方法来获取 "cleaner"分数?

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:41 25 4
gpt4 key购买 nike

我知道我可以使用:- 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com