找回密码
 会员注册
查看: 39|回复: 0

Python中decimal模块的用法教程

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-5 23:03:00 | 显示全部楼层 |阅读模式
在我们开发工作中浮点类型的使用还是比较普遍的,对于一些涉及资金金额的计算更是不能有丝毫误差,Python的decimal模块为浮点型精确计算提供了支持。1.简介decimal模块设计以十进制数、算术上下文和信号这三个概念为中心。十进制数是不可变的,它有一个符号,系数数字和一个指数,为了保持重要性,系数数字不会截断尾随零,十进制数也有特殊值,如:Infinity、-Infinity和NaN;算术上下文是指定精度、舍入规则、指数限制、指示操作结果的标志以及确定符号是否被视为异常的陷阱启用器的环境;信号是在计算过程中出现的异常条件组。对于decimal模块的设计原则,我们只需简单了解即可。2.快速上手Decimal我们看一下Decimal实例的基本使用。示例如下:fromdecimalimport*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.1999999999999997335464740903.6300000000000000976996261670.3333333333333333781908292778'''1234567891011121314使用getcontext().prec设定有效数字。示例如下:fromdecimalimport*print(Decimal(1.1)/Decimal(3.3))getcontext().prec=2print(Decimal(1.1)/Decimal(3.3))#输出结果'''0.33333333333333337819082927780.33'''1234567891011设置小数位数。示例如下:fromdecimalimport*print(Decimal(1.1)/Decimal(3.3))print((Decimal(1.1)/Decimal(3.3)).quantize(Decimal('0.00')))#学习中遇到问题没人解答?小编创建了一个Python学习交流群:153708845#输出结果'''0.33333333333333337819082927780.33'''1234567891011转成字符串。示例如下:fromdecimalimport*str(Decimal('1.23465689').quantize(Decimal('0.00')))123adjusted()在移出系数最右边的数字之后返回调整后的指数,直到只剩下前导数字,该函数用于确定最高有效位相对于小数点的位置。示例如下:fromdecimalimport*print(Decimal('321e+5').adjusted())compare(other,context=None)12345比较两个Decimal实例的值。示例如下:fromdecimalimport*print(Decimal(3.3).compare(Decimal(1.1)))123copy_abs()返回参数的绝对值。示例如下:fromdecimalimport*print(Decimal('-3.3').copy_abs())123is_normal(context=None)如果参数是一个有限正规数,返回True,如果参数是0、次正规数、无穷大或是NaN,返回False。示例如下:fromdecimalimport*print(Decimal(1).is_normal())123is_zero()如果参数是0,则返回True,否则返回False。示例如下:fromdecimalimport*print(Decimal(0).is_zero())123ln(context=None)返回操作数的自然对数(以e为底)。示例如下:fromdecimalimport*print(Decimal(1).ln())123log10(context=None)返回操作数的自然对数(以10为底)。示例如下:fromdecimalimport*print(Decimal(10).log10())123max(other,context=None)比较两个数值大小,并返回大的值。示例如下:fromdecimalimport*print(Decimal(1.1).max(Decimal(2.2)))123max_mag(other,context=None)比较两个数绝对值大小,并返回绝对值大的值。示例如下:fromdecimalimport*print(Decimal(-3.3).max_mag(Decimal(1.1)))123min(other,context=None)比较两个数值大小,并返回小的值。示例如下:fromdecimalimport*print(Decimal(1.1).min(Decimal(2.2)))123min_mag(other,context=None)比较两个数绝对值大小,并返回绝对值小的值。示例如下:fromdecimalimport*print(Decimal(-3.3).min_mag(Decimal(1.1)))123is_signed()如果参数带有负号,则返回为True,否则返回False。示例如下:fromdecimalimport*print(Decimal(-3).is_signed())123总结本节给大家介绍了decimal模块的一些概念和基本使用,对Python工程师使用decimal模块提供了支撑。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 06:00 , Processed in 3.286751 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表