Fraction类构造函数和Python中的from_float有什么区别

问题描述 投票:0回答:2

我正在使用类构造函数 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
python python-3.x fractions python-fractions
2个回答
1
投票

来自文档

在 3.2 版中更改:

Fraction
构造函数现在接受
float
decimal.Decimal
实例。

注意: 从 Python 3.2 开始,您还可以直接从

Fraction
.
 构造一个 
float

实例

换句话说,在 Python < 3.2, you had 中使用

Fraction.from_float
Fraction
构造一个
float
。从 3.2 开始,这就变得不必要了,但可能仍然存在,以免破坏向后兼容性。你可能还想用它来进行更明确的类型检查,因为如果你传递了一些其他类型,
Fraction.from_float
会引发错误,而
Fraction
构造函数可能会默默接受并且 潜在 导致微妙的错误。


1
投票

阅读实现可以看到,经过类型检查后,函数

from_float
获取分子和分母的方法与
Fraction(float)
相同。 也就是说,通过调用
as_integer_ratio
.

© www.soinside.com 2019 - 2024. All rights reserved.