Python 中 decimal 模块的用法教程

简介: Python 中 decimal 模块的用法教程

在我们开发工作中浮点类型的使用还是比较普遍的,对于一些涉及资金金额的计算更是不能有丝毫误差,Python 的 decimal 模块为浮点型精确计算提供了支持。

1.简介

decimal 模块设计以十进制数、算术上下文和信号这三个概念为中心。十进制数是不可变的,它有一个符号,系数数字和一个指数,为了保持重要性,系数数字不会截断尾随零,十进制数也有特殊值,

如:Infinity、-Infinity 和 NaN;算术上下文是指定精度、舍入规则、指数限制、指示操作结果的标志以及确定符号是否被视为异常的陷阱启用器的环境;信号是在计算过程中出现的异常条件组。对于 decimal 模块的设计原则,我们只需简单了解即可。

2.快速上手

Decimal

我们看一下 Decimal 实例的基本使用。示例如下:

from decimal import *

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
'''
AI 代码解读

使用 getcontext().prec 设定有效数字。示例如下:

from decimal import *

print(Decimal(1.1) / Decimal(3.3))
getcontext().prec = 2
print(Decimal(1.1) / Decimal(3.3))

#输出结果
'''
0.3333333333333333781908292778
0.33
'''
AI 代码解读

设置小数位数。示例如下:

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
'''
AI 代码解读

转成字符串。示例如下:

from decimal import *

str(Decimal('1.23465689').quantize(Decimal('0.00')))
AI 代码解读

adjusted()

在移出系数最右边的数字之后返回调整后的指数,直到只剩下前导数字,该函数用于确定最高有效位相对于小数点的位置。示例如下:

from decimal import *

print(Decimal('321e+5').adjusted())

compare(other, context=None)
AI 代码解读

比较两个 Decimal 实例的值。示例如下:

from decimal import *

print(Decimal(3.3).compare(Decimal(1.1)))
AI 代码解读

copy_abs()

返回参数的绝对值。示例如下:

from decimal import *

print(Decimal('-3.3').copy_abs())
AI 代码解读

is_normal(context=None)

如果参数是一个有限正规数,返回 True,如果参数是 0、次正规数、无穷大或是 NaN,返回 False。示例如下:

from decimal import *

print(Decimal(1).is_normal())
AI 代码解读

is_zero()

如果参数是 0,则返回 True,否则返回 False。示例如下:

from decimal import *

print(Decimal(0).is_zero())
AI 代码解读

ln(context=None)

返回操作数的自然对数(以 e 为底)。示例如下:

from decimal import *

print(Decimal(1).ln())
AI 代码解读

log10(context=None)

返回操作数的自然对数(以 10 为底)。示例如下:

from decimal import *

print(Decimal(10).log10())
AI 代码解读

max(other, context=None)

比较两个数值大小,并返回大的值。示例如下:

from decimal import *

print(Decimal(1.1).max(Decimal(2.2)))
AI 代码解读

max_mag(other, context=None)

比较两个数绝对值大小,并返回绝对值大的值。示例如下:

from decimal import *

print(Decimal(-3.3).max_mag(Decimal(1.1)))
AI 代码解读

min(other, context=None)

比较两个数值大小,并返回小的值。示例如下:

from decimal import *

print(Decimal(1.1).min(Decimal(2.2)))
AI 代码解读

min_mag(other, context=None)

比较两个数绝对值大小,并返回绝对值小的值。示例如下:

from decimal import *

print(Decimal(-3.3).min_mag(Decimal(1.1)))
AI 代码解读

is_signed()

如果参数带有负号,则返回为 True,否则返回 False。示例如下:

from decimal import *

print(Decimal(-3).is_signed())
AI 代码解读

总结

本节给大家介绍了 decimal 模块的一些概念和基本使用,对 Python 工程师使用 decimal 模块提供了支撑。

目录
打赏
0
0
0
0
24
分享
相关文章
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
27 8
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
17 4
Python语法糖详解教程
《Python语法糖详解教程》介绍了编程语言中的“语法糖”,即通过特殊语法形式简化代码,使代码更简洁、易读和高效。文章详细解析了列表推导式、字典推导式、元组解包、条件表达式、with语句和装饰器等核心语法糖,并提供了具体示例和最佳实践指南。通过这些技巧,开发者可以在保持底层功能不变的前提下,显著提升开发效率和代码质量。
26 8
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
323 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
|
3月前
|
Python Internet 模块
Python Internet 模块。
138 74
|
2月前
|
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
35 3
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
100 8
|
3月前
|
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
60 4

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等