gpt4 book ai didi

Python:为什么 0.01.as_integer_ratio() 返回 5764607523034235/576460752303423488

转载 作者:行者123 更新时间:2023-12-02 02:38:54 25 4
gpt4 key购买 nike

我在做 question 33 of Project Euler在 Python 中,当我注意到一些我不明白的事情时。

问题的答案需要以最低通用术语给出的分母。所以我想我会使用 float.as_integer_ratio()检查分母是什么。原来0.01.as_integer_ratio()返回 (5764607523034235, 576460752303423488)0.1.as_integer_ratio()返回 (3602879701896397, 36028797018963968)而不是预期的 1/1001/10 .

为什么它的行为是这样的?我猜这与这些数字如何存储在计算机上有关。我也尝试过 Python 中的 Fractions 库,但这给出了相同的结果。我希望有人可以向我解释为什么它会这样。

最佳答案

正如colidre 提到的,问题在于浮点表示的不准确。您可以使用 limit_denominator method在分数库中以获得正确的结果。

>>> from fractions import Fraction
>>> Fraction(0.01).limit_denominator(100000)
1/100

关于Python:为什么 0.01.as_integer_ratio() 返回 5764607523034235/576460752303423488,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61110419/

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