python的fractions.limit_denominator是如何实现的?
发布时间:2020-12-16 21:44:05 所属栏目:Python 来源:网络整理
导读: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 fractio
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) 它不应该像尝试/ 999,b / 998,c / 997 ..并找到最佳近似值. 解决方法
分数模块是用Python编写的,您只需查看源代码即可.它包含以下注释.
# 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |