by 程序员野客

在我们开发工作中浮点类型的使用还是比较普遍的,对于一些涉及资金金额的计算更是不能有丝毫误差,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

'''

使用 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

'''

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

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

'''

转成字符串。示例如下:

from decimal import *

str(Decimal('1.23465689').quantize(Decimal('0.00')))

adjusted()

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

from decimal import *

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

compare(other, context=None)

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

from decimal import *

print(Decimal(3.3).compare(Decimal(1.1)))

copy_abs()

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

from decimal import *

print(Decimal('-3.3').copy_abs())

is_normal(context=None)

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

from decimal import *

print(Decimal(1).is_normal())

is_zero()

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

from decimal import *

print(Decimal(0).is_zero())

ln(context=None)

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

from decimal import *

print(Decimal(1).ln())

log10(context=None)

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

from decimal import *

print(Decimal(10).log10())

max(other, context=None)

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

from decimal import *

print(Decimal(1.1).max(Decimal(2.2)))

max_mag(other, context=None)

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

from decimal import *

print(Decimal(-3.3).max_mag(Decimal(1.1)))

min(other, context=None)

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

from decimal import *

print(Decimal(1.1).min(Decimal(2.2)))

min_mag(other, context=None)

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

from decimal import *

print(Decimal(-3.3).min_mag(Decimal(1.1)))

is_signed()

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

from decimal import *

print(Decimal(-3).is_signed())

总结

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

参考:

关注公众号:python技术,回复"python"一起学习交流

python中安装decimal模块_第38天:Python decimal 模块相关推荐

  1. python中nlp的库_用于nlp的python中的网站数据清理

    python中nlp的库 The most important step of any data-driven project is obtaining quality data. Without t ...

  2. python中idle怎么打开_为什么我的python脚本只打开IDLE?

    我不明白为什么运行我的Python程序只会打开IDLE. 不确定在SuperUser上是否更合适,但可以使用以下方法:我无法从命令行运行python脚本. OSX 10.7.4,全新安装python ...

  3. python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...

    python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...

  4. python中for循环缩进_跟小白学Python数据分析——For循环

    原标题:跟小白学Python数据分析--For循环 循环是指反复地连续做某件事,例如地球绕地轴自转一圈就是一天,自转的同时绕太阳公转一圈就是一年.周而复始,转了一圈又一圈,一次又一次地循环. 在编程过 ...

  5. python中注释的快捷键_总算懂了python注释快捷键

    ython中的注释有多种,有单行注释,多行注释,批量注释,中文注释也是常用的.注下面是小编为您整理的关于python注释快捷键,希望对你有所帮助. Python多行代码注释快捷键 选中要注释的代码,按 ...

  6. python中with open用法_在线玩转python中with用法

    在本篇文章里小编给大家整理的是关于python中with用法讲解内容,有需要的朋友们可以参考下. 我们都知道打开文件有两种方法:f = open() with open() as f: 这两种方法的区 ...

  7. python中的异常分类_列举 5 个 Python 中的异常类型以及其含义【面试题详解】

    今天爱分享给大家带来列举 5 个 Python 中的异常类型以及其含义[面试题详解],希望能够帮助到大家. BaseException +-- SystemExit +-- KeyboardInter ...

  8. python中对象不可迭代_【转】Python中自定义可迭代对象

    python 中内置的可迭代的对象有 list.tuple.set.dict 等,那么我们自己怎么定义一个可迭代的对象呢?先来段代码吧 import re import reprlib RE_WORD ...

  9. python中float函数作用_解析要在Python中浮动的字符串(float()函数)

    给定一个字符串值(包含浮点值),我们必须在Python中将其转换为浮点值. 要将字符串值转换为float,我们使用float()功能. Python float() 功能 float()functio ...

  10. python中合法的赋值语句是_以下( )是合法的Python赋值语句。_学小易找答案

    [多选题]和弦构成:根音为降A的小小七和弦,三音.五音.七音分别是() [填空题]可能性 n. [多选题]与降G互为等音的是() [单选题]"暂停动作替换"是 发明的. [填空题] ...

最新文章

  1. BindingException异常第一种解决办法
  2. IT兄弟连 JavaWeb教程 监听器3
  3. Springboot+Docker+RabbitMQ教程来了。
  4. kibana操作elasticsearch:查看映射关系
  5. C语言中指针定义的时候初始化的必要性
  6. WPF中自定义窗体标题栏
  7. SAP CRM WebClient UI图标url的生成逻辑
  8. 数字ab写成c语言表达式,《C语言程序设计》复习题(21页)-原创力文档
  9. linux 动态执行cp,Linux常用命令之cp、mv、rm、cat、more、head、tail、ln命令讲解
  10. 导入安全证书到jdk
  11. Oracle管理文件OMF (oracle managed files)
  12. 伴随矩阵,可逆矩阵相关思路分析之一
  13. SDL(01-10)
  14. Matpower使用中问题
  15. 夏昕.深入浅出Hibernate中的第一个例子体会.
  16. 熬夜不易,请老范喝杯烈酒
  17. 接近开关 NPN 与 PNP的区别
  18. MySQL添加新用户、创建数据库、为新用户分配权限、收回权限
  19. vmware虚拟机更改MAC地址方法
  20. Android 屏幕适配终结者

热门文章

  1. react 使用cookie react-cookies
  2. 求连续数组子序咧的最大和
  3. 算法十大排序(含动图)
  4. 【bzoj1668/Usaco2006 Oct】Cow Pie Treasures 馅饼里的财富——dp
  5. split,splice,slice,substr,substring使用方法总结
  6. position:fixed 失效
  7. 对Windows学习的总结
  8. ruby中文文档下载
  9. FLEX自动完成组件.--AutoSuggest
  10. 网络工程师HCIE-RS-layer2(原理+实验)