Python float到rati

2024-06-23 03:02:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着得到变量的比值,得到意想不到的结果。有人能解释一下吗?

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

我使用Python3.3

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

为什么对2.5正确

>>> value = 2.5
>>> value.as_integer_ratio()
(5, 2)

Tags: valueasinteger解决方案ratio比值ratios
2条回答

使用^{} module来简化分数:

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

^{} function

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

浮点数的精度有限,不能精确地表示许多数字;您看到的是一个舍入表示,但实数是:

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

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

不是16/5,因为3.2不是3.2正是。。。它是它的浮点粗略近似。。。例如:3.20000000000000017764

相关问题 更多 >

    热门问题