Python Decimal模块

news/2024/11/30 6:52:36/

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.1999999999999997335464740903.6300000000000000976996261670.3333333333333333781908292778'''

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

from decimal import *
print(Decimal(1.1) / Decimal(3.3))getcontext().prec = 2print(Decimal(1.1) / Decimal(3.3))
#输出结果'''0.33333333333333337819082927780.33'''

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

from decimal import *
print(Decimal(1.1) / Decimal(3.3))print((Decimal(1.1) / Decimal(3.3)).quantize(Decimal('0.00')))
#输出结果'''0.33333333333333337819082927780.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 模块提供了支撑。


http://www.ppmy.cn/news/88928.html

相关文章

教你如何选择真正有用的防关联指纹浏览器

从事亚马逊、eBay、Shopify等电商平台的卖家都知道,如果我们需要在这些平台上经营多个店铺,需要使用多个账号为店铺进行评价,在Facebook和Instagram上做SEO和广告,通常也需要使用一个防关联指纹浏览器。 防关联指纹浏览器主要解决…

一次db2 load SQL2032N的经历

blocknonlogged -“禁止创建允许不进行日志记录的活动的表”配置参数 此参数指定数据库管理器是否允许对表激活 NOT LOGGED 或 NOT LOGGED INITIALLY 属性。 配置类型:数据库 参数类型:可联机配置 缺省值 [范围]:No [Yes, No] 缺省情况下&am…

如何使用ArcGIS制作气温空间分布图

本文使用ArcMap10.2,以湖北省为例,通过空间插值,制作湖北省1981-2010年20年平均气温空间分布图 树谷资料库资源大全 1 数据准备 可在中国气象数据网下载湖北省1981-2010共20年的各区站累年平均气温数据和各区站经纬度数据。打开为txt格式 在…

接口测试的请求和响应

接口测试的请求和响应 在软件开发中,接口测试是必不可少的一环节。接口测试主要涉及到测试请求和响应的过程。请求是指客户端向服务器发送的一些指令或数据,而响应则是服务器对这些请求做出的回应。 请求通常包括请求方法、请求头以及请求体。请求方法有…

计算机视觉物体检测

在本篇博客中,我们将从零开始实现一个计算机视觉中的物体检测任务。我们将使用 Python 和 PyTorch 框架,并使用一个简单的卷积神经网络(CNN)模型进行物体检测。我 ## 1. 准备工作 首先,确保已经安装了以下库&#xf…

Golang-循环变量作用域针对那些数据类型会出现问题

一、原因 在 Go 中,循环变量的作用域是整个 for 循环语句块。因此,循环变量在 for 循环语句块中的代码都是可见的。 但是,当循环变量的值被用于闭包, 协程或者使用指针类型的数据结构时,会出现一些问题。这是因为循环变量的值在…

windows系统python3.7版本pyspider安装

环境:很多的python版本都尝试过安装pyspider,网上多数让python3.6安装,说是这个环境是最佳的环境,测试安装最方便快捷,但是一直报result_worker starting…!!!,卡死在界面…

Python itertools模块

count 功能详解 count(start0,step1) 函数有两个参数,其中 step 是默认参数,可选的,默认值为 1。该函数返回一个新的迭代器,从 start 开始,返回以 step 为步长的均匀间隔的值。 import itertoolsx itertools.count(…