python浮点数精度

如果想同时得到商和余数,可以用这个方法:

>>> divmod(10,3)
(3, 1)

因为浮点数精度的问题,Python还存在一些计算方面的小问题,例如:

>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17

什么?不是应该等于0吗?Python居然还有这么不为人知的一面?

要解决这个问题,可以导入decimal模块:

>>> from decimal import Decimal
>>> Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.0')
>>> Decimal('0.1') / Decimal('0.3')
Decimal('0.3333333333333333333333333333')

>>> from decimal import getcontext
>>> getcontext().prec = 4 #设置全局精度
>>> Decimal('0.1') / Decimal('0.3')
Decimal('0.3333') 

 

posted @ 2021-04-17 14:16  fat_girl_spring  阅读(306)  评论(0编辑  收藏  举报