Python浮空比率
我尝试获取变量的定量并得到意外的结果。有人可以解释吗?
>>> 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)
-
使用该
fractions
模块可以简化分数:>>> from fractions import Fraction >>> Fraction(3.2) Fraction(3602879701896397, 1125899906842624) >>> Fraction(3.2).limit_denominator() Fraction(16, 5)
从
Fraction.limit_denominator()
功能:查找并返回最接近
Fraction
于self
具有最多max_denominator分母。该方法对于找到给定浮点数的有理逼近很有用浮点数在精度上的限制,并不能代表很多数字 准确 ; 您看到的是四舍五入的表示形式,但实际数字是:
>>> format(3.2, '.50f') '3.20000000000000017763568394002504646778106689453125'
因为浮点数表示为二进制分数的和;1/5只能通过将1/8 + 1/16 + 1/128 +更多的二进制分数相加来增加2的指数来表示。