gpt4 book ai didi

python - 如何将十进制数转换为分数?

转载 作者:IT老高 更新时间:2023-10-28 20:31:26 24 4
gpt4 key购买 nike

我想知道如何在 Python 中将小数转换为最低形式的分数。

例如:

0.25  -> 1/4
0.5 -> 1/2
1.25 -> 5/4
3 -> 3/1

最佳答案

你有两个选择:

  1. 使用float.as_integer_ratio() :

    >>> (0.25).as_integer_ratio()
    (1, 4)

    (从 Python 3.6 开始,您可以 do the same with a decimal.Decimal() object 。)

  2. 使用 fractions.Fraction() type :

    >>> from fractions import Fraction
    >>> Fraction(0.25)
    Fraction(1, 4)

后者有一个非常有用的str()转换:

>>> str(Fraction(0.25))
'1/4'
>>> print Fraction(0.25)
1/4

由于浮点值可能不精确,您可能会得到“奇怪”的分数;使用 Fraction.limit_denominator() 将分母限制为“简化”分数:

>>> Fraction(0.185)
Fraction(3332663724254167, 18014398509481984)
>>> Fraction(0.185).limit_denominator()
Fraction(37, 200)

如果你还在使用 Python 2.6,那么 Fraction() 还不支持直接传入 float,但你可以将上述两种技术组合成:

Fraction(*0.25.as_integer_ratio())

或者您也可以使用 Fraction.from_float() class method :

Fraction.from_float(0.25)

本质上做同样的事情,例如取整数比率元组并将其作为两个单独的参数传递。

还有一个带有样本值的小演示:

>>> for f in (0.25, 0.5, 1.25, 3.0):
... print f.as_integer_ratio()
... print repr(Fraction(f)), Fraction(f)
...
(1, 4)
Fraction(1, 4) 1/4
(1, 2)
Fraction(1, 2) 1/2
(5, 4)
Fraction(5, 4) 5/4
(3, 1)
Fraction(3, 1) 3

fractions 模块和 float.as_integer_ratio() 方法都是 Python 2.6 中的新方法。

关于python - 如何将十进制数转换为分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23344185/

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