python语言的浮点数必须带小数部分_Python:大型浮点数的小数部分

我试图得到(pow(10,i) – 1)/ 23的小数部分为0

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

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

如何在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值