gpt4 book ai didi

Python:大 float 的小数部分

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

我正在尝试获取 (pow(10, i) - 1)/23 的小数部分对于 0 < i < 50 .我试过了

(pow(10, i) - 1)/23 % 1

在 Python 3 中,但我得到 0.0对于 i 的所有值大于 17。

如何在 Python 中提取大整数的小数部分?

最佳答案

为了保持精度,我可能会使用 fractions模块:

>>> from fractions import Fraction
>>> Fraction(10)
Fraction(10, 1)
>>> Fraction(10)**50
Fraction(100000000000000000000000000000000000000000000000000, 1)
>>> Fraction(10)**50-1
Fraction(99999999999999999999999999999999999999999999999999, 1)
>>> (Fraction(10)**50-1)/23
Fraction(99999999999999999999999999999999999999999999999999, 23)
>>> ((Fraction(10)**50-1)/23) % 1
Fraction(5, 23)
>>> float(((Fraction(10)**50-1)/23) % 1)
0.21739130434782608

尽管使用 decimal模块将是另一种选择。

更新:等等,再想一想,这里的答案总是((10^n-1) % 23)/23,所以上面的代码明显矫枉过正(尽管确实如此更好地扩展到更复杂的问题)。我们甚至可以利用三参数 pow 调用:

>>> pow(10, 50, 23)
6
>>> pow(10, 50, 23) - 1
5
>>> (pow(10, 50, 23) - 1) % 23 # handle possible wraparound
5
>>> ((pow(10, 50, 23) - 1) % 23) / 23.0
0.21739130434782608

关于Python:大 float 的小数部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708840/

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