【发布时间】:2016-07-03 16:58:55
【问题描述】:
在 Python 3.52 中进行浮点类型到分数类型转换的练习时,我发现了两种不同转换方式之间的区别。
第一种方法是:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> print(f)
2709702426188841/2199023255552 #Answer
第二种方法是:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(str(x))
>>> print(f)
123223/100 #Answer
我想知道这两个不同答案背后的原因?对不起,如果这是一个愚蠢的问题,我是编程和 Python 的新手。
已编辑:我找到了一种将第一种方法获得的不准确分数转换为limit_denominator 方法准确的方法:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> f = f.limit_denominator(100)
>>> print(f)
123223/100
【问题讨论】:
标签: python floating-point type-conversion fractions