如何在Python中简化变量的分数值

时间:2019-09-19 00:05:18

标签: python python-3.x fractions

我有一个名为getShape的变量,其值确定为:b。在文件的后面,我想获取b = float(input("What is your y-intercept?"))的值(假设它是一个浮点数)并将其转换为这样的分数:b。我知道类似print(Fraction(b))的东西会打印print(Fraction(0.45)),但是8106479329266893/18014398509481984会打印print(Fraction('0.45'))。如何使用变量获得相同的结果?进行9/20会给我这个错误:print(Fraction('b'))

代码:

ValueError: Invalid literal for Fraction: 'b'

4 个答案:

答案 0 :(得分:0)

Fraction(str(b))

这是将变量的 value (而不是其* name)转换为字符串的方式。

答案 1 :(得分:0)

如@Prune所述,您必须将变量的值转换为字符串,一种替代方法是使用f-string

from fractions import Fraction
b = 0.45
print(Fraction(f'{b}'))

建议的文档解决方案是使用limit_denominator

b = 0.45
print(Fraction(b).limit_denominator())

输出

9/20

有关浮点的更多信息,请参见this

答案 2 :(得分:0)

print(Fraction('b'))不起作用的原因是因为您要python从字符'b'中创建一个分数。您需要做的是获取b的字符串表示形式,即str(b),所以Fraction(str(b))

答案 3 :(得分:-1)

为什么要使用float变量?最好使用int()函数简单地回答。创建一个整数,而不是添加一个小数。