python中的limit是干嘛用的_python的fractions.limit_denominator是如何实现的?

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值