提问人: 提问时间:5/12/2023 最后编辑:dan04 更新时间:5/13/2023 访问量:68
大数python的乘法
Multiplication of large numbers python
问:
我决定将两个数字相乘: 1.0 17299991019999108999910899991119999 结果,我收到了回复: 1.729999101999911e+34
法典:
print(1.0*17299991019999108999910899991119999)
1.729999101999911e+34
为什么 python 计数不正确?
答:
1赞
dan04
5/13/2023
#1
因为是一个 ,而 Python 算术的规则有 * = 。1.0
float
float
int
float
如果你想做任何严肃的数学工作,你应该知道,Python 是一个 IEEE 754 双精度数,因此(除了“非正态”)有 53 位(= 15-16 个十进制数字)的精度。数字 17299991019999108999910899991119999 的长度为 114 位,因此被舍入。float
如果需要高精度算术,请使用适当的数据类型而不是 .float
评论
decimal
。Decimal(17299991019999108999910899991119999.0)
Decimal("17299991019999108999910899991119999.0")
getcontext().prec = 50
Decimal
172...99.0