我需要将小数转换为分数,即使它除以1也是如此。 我尝试使用分数模块,但是它给出了3而不是3 / 1,5而不是5/1等等。所以我想知道是否有可能使用分数模块或其他东西获得这种分数? / p>
答案 0 :(得分:2)
您可以使用字符串格式来实现您想要的效果。
from fractions import Fraction
no = Fraction(3, 1)
str_no = "{0}/{1}".format(no.numerator, no.denominator)
print(str_no)
答案 1 :(得分:1)
您可以覆盖班级__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
答案 2 :(得分:0)
这是一种方式。
使用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