用decimal模块增加python的浮点数精度

Posted 梁少华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用decimal模块增加python的浮点数精度相关的知识,希望对你有一定的参考价值。

浮点数python默认是17位精度,也就是小数点后16位(16位以后的全部四舍五入了),虽然有16位,但是这个精度越往后越不准.

如果有特殊需求,需要更多的精度,可以用decimal模块,通过更改其里面getcontext()函数里面的prec参数,来决定你想要的浮点数精度。

 

from decimal import Decimal
from decimal import getcontext

work_context = getcontext()
work_context.prec = 100
print(work_context)
‘‘‘
Context(prec=100, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
<class ‘decimal.Decimal‘>
‘‘‘

d = Decimal(1) / Decimal(3)
print(type(d), d)

"""
 0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

"""

 

 

 

 

以上是关于用decimal模块增加python的浮点数精度的主要内容,如果未能解决你的问题,请参考以下文章

c#中decimal ,double,float的区别

python的浮点数运算是否精度有问题阿

1.2 decimal模块

float精度丢失问题解决,用decimal.Decimal

Java 中的浮点数取精度方法

如何正确地将作为 CSV 文件中字符串的浮点数/双精度数作为浮点数/双精度数导入程序?