gpt4 book ai didi

python - 为什么分数模块中数字字符串(float)和 float 实例的结果不同?

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:10 25 4
gpt4 key购买 nike

>>> from fractions import Fraction
>>> Fraction(2.6)
**Fraction(5854679515581645, 2251799813685248)**
>>> Fraction(2.6).limit_denominator(10)
Fraction(13,2)
>>> Fraction('2.6') #Fraction(str(2.6)) or Fraction(repr(2.6))
**Fraction(13,2)**

为什么 Fraction 不为 float 实例返回最接近的分数?

最佳答案

来自 the documentation :

Note that due to the usual issues with binary floating-point (see Floating Point Arithmetic: Issues and Limitations), the argument to Fraction(1.1) is not exactly equal to 11/10, and so Fraction(1.1) does not return Fraction(11, 10) as one might expect. (But see the documentation for the limit_denominator() method below.)

基本上,2.6不能用二进制精确表示。上述摘录中的问题和限制链接提供了更多详细信息。

如建议的那样,您可以使用 limit_denominator() 来提供帮助:

>>> from fractions import Fraction
>>> Fraction(2.6)
Fraction(5854679515581645, 2251799813685248)
>>> Fraction(2.6).limit_denominator(100)
Fraction(13, 5)

或者,您可以使用字符串输入(您似乎已经发现了)。

关于python - 为什么分数模块中数字字符串(float)和 float 实例的结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36249335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com