说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
众所周知,Python 内置的浮点类型精度会缺失,但实际业务中往往要求不能有丝毫误差,比如资金计算、精密工程等情况。Python 的 decimal 模块为浮点型精确计算提供了支持。
我们看一下 Decimal 实例的基本使用。示例如下:
from decimal import Decimal
print(Decimal(1.1) + Decimal(3.3))
print(Decimal(1.1) - Decimal(3.3))
print(Decimal(1.1) * Decimal(3.3))
print(Decimal(1.1) / Decimal(3.3))
# 输出结果
'''
4.399999999999999911182158030
-2.199999999999999733546474090
3.630000000000000097699626167
0.3333333333333333781908292778
'''
算术上下文,设定有效数字。示例如下:
from decimal import *
print(Decimal(1.1) / Decimal(3.3))
getcontext().prec = 2
print(Decimal(1.1) / Decimal(3.3))
# 输出结果
'''
0.3333333333333333781908292778
0.33
'''
设置小数位数:
from decimal import *
print(Decimal(1.1) / Decimal(3.3))
print((Decimal(1.1) / Decimal(3.3)).quantize(Decimal('0.00')))
# 输出结果
'''
0.3333333333333333781908292778
0.33
'''
该模块的设计以三个概念为中心:decimal 数值,算术上下文和信号。
如果你从事科学或工程领域的大多数计算,那么使用普通的浮点类型是比较普遍的做法。因为在真实世界中很少会要求精确到17位精度的普通浮点数。因此,计算过程中的那么一点点的误差是被允许的。其次,原生的二进制浮点数计算要快的多-有时候你在执行大量运算的时候速度也是非常重要的。总的来说,decimal 模块主要用在涉及到金融的领域。在这类程序中,哪怕是一点小小的误差在计算过程中蔓延都是不允许的。因此,decimal 模块为解决这类精度问题提供了方法。decimal意思为十进制,这个模块提供了十进制浮点运算支持。我们在数据库处理金融数据的时候也会遇到 Decimal 对象。
todo
更新时间:2022-06-29 23:33:03 标签:python 十进制 浮点