首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python的fractions.limit_denominator是如何实现的?

python的fractions.limit_denominator是如何实现的?
EN

Stack Overflow用户
提问于 2012-11-18 12:48:13
回答 1查看 3.6K关注 0票数 7
代码语言:javascript
复制
limit_denominator(max_denominator=1000000)
Finds and returns the closest Fraction to self that has denominator at most max_denominator. This method is useful for finding rational approximations to a given floating-point number:

>>>
>>> from fractions import Fraction
>>> Fraction('3.1415926535897932').limit_denominator(1000)
Fraction(355, 113)

它不应该像尝试a/999、b/998、c/997那样。并找到最佳近似值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 13:39:53

fractions模块是用Python语言编写的,您可以查看源代码。它包含以下注释。

代码语言:javascript
复制
    # Algorithm notes: For any real number x, define a *best upper
    # approximation* to x to be a rational number p/q such that:
    #
    #   (1) p/q >= x, and
    #   (2) if p/q > r/s >= x then s > q, for any rational r/s.
    #
    # Define *best lower approximation* similarly.  Then it can be
    # proved that a rational number is a best upper or lower
    # approximation to x if, and only if, it is a convergent or
    # semiconvergent of the (unique shortest) continued fraction
    # associated to x.
    #
    # To find a best rational approximation with denominator <= M,
    # we find the best upper and lower approximations with
    # denominator <= M and take whichever of these is closer to x.
    # In the event of a tie, the bound with smaller denominator is
    # chosen.  If both denominators are equal (which can happen
    # only when max_denominator == 1 and self is midway between
    # two integers) the lower bound---i.e., the floor of self, is
    # taken.
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13437589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档