python - 小数除以1

python - decimal into fraction divided by 1

我需要将小数转换为分数,即使它除以 1。 我尝试使用分数模块,但它给出了 3 而不是 3/1,5 而不是 5/1 等。所以我想知道是否有可能使用分数模块或其他东西来获得这种分数?

您可以使用字符串格式来实现您想要的效果。

from fractions import Fraction
no = Fraction(3, 1)

str_no = "{0}/{1}".format(no.numerator, no.denominator)
print(str_no)

这是一种方法。

使用 is_digit 检查小数是否为整数,如果是,则添加 /1

import fractions

for v in [2.0, 0.1, 0.5, 1.5, 2.0 ]:
    if v.is_integer():
        print('{} = {}/1'.format(v, fractions.Fraction.from_float(v)))
    else:
        print('{} = {}'.format(v, fractions.Fraction.from_float(v)))

输出:

2.0 = 2/1
0.1 = 3602879701896397/36028797018963968
0.5 = 1/2
1.5 = 3/2
2.0 = 2/1

您可以覆盖 class 的 __str__ 以获得您喜欢的行为:

import fractions

class Fraction(fractions.Fraction):
    def __str__(self):
        return '{}/{}'.format(self.numerator, self.denominator)


x = Fraction('6/2')
print(x)
x = Fraction('1.5')
print(x)

输出:

$ python3 x.py 
3/1
3/2