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
我需要将小数转换为分数,即使它除以 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