gpt4 book ai didi

Python 浮点比

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:33 25 4
gpt4 key购买 nike

我尝试获取变量的比例并得到意想不到的结果。有人可以解释一下吗?

>>> 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 module简化分数:

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

来自Fraction.limit_denominator() 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

float 的精度有限,不能准确表示很多数;你看到的是四舍五入的表示,但实际数字是:

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

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

关于Python 浮点比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36140159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com