Python浮空比率

发布于 2021-01-29 17:33:59

我尝试获取变量的定量并得到意外的结果。有人可以解释吗?

>>> value = 3.2
>>> ratios = value.as_integer_ratio()
>>> ratios
(3602879701896397, 1125899906842624)
>>> ratios[0] / ratios[1]
3.2

我使用python 3.3

但我认为这(16, 5)是更好的解决方案

以及为什么它适合 2.5

>>> value = 2.5
>>> value.as_integer_ratio()
(5, 2)
关注者
0
被浏览
40
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用该fractions模块可以简化分数:

    >>> from fractions import Fraction
    >>> Fraction(3.2)
    Fraction(3602879701896397, 1125899906842624)
    >>> Fraction(3.2).limit_denominator()
    Fraction(16, 5)
    

    Fraction.limit_denominator()功能

    查找并返回最接近Fractionself具有最多max_denominator分母。该方法对于找到给定浮点数的有理逼近很有用

    浮点数在精度上的限制,并不能代表很多数字 准确 ; 您看到的是四舍五入的表示形式,但实际数字是:

    >>> format(3.2, '.50f')
    '3.20000000000000017763568394002504646778106689453125'
    

    因为浮点数表示为二进制分数的和;1/5只能通过将1/8 + 1/16 + 1/128 +更多的二进制分数相加来增加2的指数来表示。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看