我使用类构造函数Fraction来创建分数。当从浮点数创建分数时,使用Fraction类构造函数和from_float方法之间的区别是什么?
我用不同的数字测试了它,得到了相同的答案。例如:
from fractions import Fraction
f1 = Fraction(0.3)
f2 = Fraction.from_float(0.3)
print(f1) # Output: 5404319552844595/18014398509481984
print(f2) # Output: 5404319552844595/18014398509481984
来自文档:
在3.2版更改:
Fraction
构造函数现在接受float
和decimal.Decimal
实例。
注意:从Python 3.2开始,您还可以直接从
float
构造Fraction
实例。
换句话说,在Python中<3.2,你必须使用Fraction.from_float
从float
构造Fraction
。自3.2以来,这已经变得不必要,但仍然存在,可能是为了不破坏向后兼容性。您可能还想使用它进行更显式的类型检查,因为如果传递其他类型,Fraction.from_float
会引发错误,而Fraction
构造函数可能会默默地接受这些类型,并且可能会导致微妙的错误。
阅读实现可以看到,在类型检查之后,函数from_float
使用与Fraction(float)
相同的方法获得分子和分母。即通过调用as_integer_ratio
。