选择您的数字是分数还是小数
Choose if your number is a fraction or a decimal
我正在尝试做到这一点,如果分数的分母大于 2,它会打印小数。否则,它打印分数
from fractions import Fraction
z = float(input())
frac = (Fraction(z))
s = str(z)
x = s.find("/")
x1 = x + 1
segment = z[x1:]
print(segment)
if len(segment) <= 3:
print(frac)
else:
print(z)
你让它变得比需要的更难。使用 Fraction
实例的 denominator
attribute:
frac = Fraction(z)
if frac.denominator > 2:
print(z)
else:
print(frac)
您可能想使用 Fraction.limit_denominator()
method 来解释浮点数的不精确性:
frac = Fraction(z).limit_denominator()
if frac.denominator > 2:
print(z)
else:
print(frac)
Fraction.limit_denominator()
求最接近分母小于100万的原始分数:
>>> from fractions import Fraction
>>> 2/3
0.6666666666666666
>>> Fraction(2/3)
Fraction(6004799503160661, 9007199254740992)
>>> Fraction(2/3).limit_denominator()
Fraction(2, 3)
另一种选择是将用户输入直接传递给 Fraction()
;构造函数接受 float()
和 字符串的有效值,格式为 numerator / denominator(带可选符号)。这将使您的用户输入精确的分数,例如 '2 / 3':
z = Fraction(input()).limit_denominator()
if frac.denominator > 2:
print(float(z))
else:
print(frac)
我正在尝试做到这一点,如果分数的分母大于 2,它会打印小数。否则,它打印分数
from fractions import Fraction
z = float(input())
frac = (Fraction(z))
s = str(z)
x = s.find("/")
x1 = x + 1
segment = z[x1:]
print(segment)
if len(segment) <= 3:
print(frac)
else:
print(z)
你让它变得比需要的更难。使用 Fraction
实例的 denominator
attribute:
frac = Fraction(z)
if frac.denominator > 2:
print(z)
else:
print(frac)
您可能想使用 Fraction.limit_denominator()
method 来解释浮点数的不精确性:
frac = Fraction(z).limit_denominator()
if frac.denominator > 2:
print(z)
else:
print(frac)
Fraction.limit_denominator()
求最接近分母小于100万的原始分数:
>>> from fractions import Fraction
>>> 2/3
0.6666666666666666
>>> Fraction(2/3)
Fraction(6004799503160661, 9007199254740992)
>>> Fraction(2/3).limit_denominator()
Fraction(2, 3)
另一种选择是将用户输入直接传递给 Fraction()
;构造函数接受 float()
和 字符串的有效值,格式为 numerator / denominator(带可选符号)。这将使您的用户输入精确的分数,例如 '2 / 3':
z = Fraction(input()).limit_denominator()
if frac.denominator > 2:
print(float(z))
else:
print(frac)