0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python小数数字对象Decimal

jf_78858299 来源:梯阅线条 作者:小梯子 2023-03-10 10:04 次阅读

python的小数数字对象,类似于浮点数,只不过小数数字有固定的位数和小数点。

python小数数字是有固定精度的浮点值。

python小数数字对象的性能略微低于浮点数。

python小数数字需使用decimal模块。

python的decimal.getcontext().prec可以设置小数精度。

1.1 python小数基础知识

python浮点数缺乏精确性,因为存储数值的空间有限。

python小数对象可以修正浮点数的精确性问题。

1.1.1 Decimal()

python不同小数位数的Decimal对象运算时,自动升级为小数位数最多的小数位。

用法

Decimal(str)

描述

生成小数字符串对应的Decimal对象。

入参

str:小数字符串

示例

>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17
>>> print(0.1+0.1+0.1-0.3)
5.551115123125783e-17
>>> from decimal import Decimal
>>> Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.0')
>>> Decimal('0.10')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.00')

1.2 设置全局精度

python通过上下文对象(decimal.getcontext().prec)设置小数的全局精度。

示例

>>> import decimal
>>> decimal.Decimal(1)/decimal.Decimal(7)
Decimal('0.1428571428571428571428571429')
>>> decimal.getcontext().prec = 4
>>> decimal.Decimal(1)/decimal.Decimal(7)
Decimal('0.1429')

1.3 临时设置精度

python通过本地上下文管理器(decimal. localcontext ().prec)设置小数的临时精度。语句执行完后,继续使用初始精度。

示例

>>> import decimal
>>> decimal.Decimal('1.00')/decimal.Decimal('3.00')
Decimal('0.3333333333333333333333333333')
>>> with decimal.localcontext() as ctx:
...         ctx.prec = 2
...         decimal.Decimal('1.00')/decimal.Decimal('3.00')
...
... 
Decimal('0.33')
>>> decimal.Decimal('1.00')/decimal.Decimal('3.00')
Decimal('0.3333333333333333333333333333')
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 浮点数
    +关注

    关注

    0

    文章

    60

    浏览量

    15870
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84700
收藏 人收藏

    评论

    相关推荐

    Python的面向对象编程详解

    一般编程可分为面向过程编程,和面向对象编程。Python的面向对象编程,与Java的面向对象很像。之所以需要面向对象编程,是为了更好地实现封
    发表于 09-04 16:35 568次阅读
    <b class='flag-5'>Python</b>的面向<b class='flag-5'>对象</b>编程详解

    VHDL 怎么定义整数数组和小数数组啊

    比如简单的以为数组我想定义成(3,13,22,3,4,5)这种,怎么定义成二维(1,3,4;2,5,4)同上一维小数数组怎么定义,二维小数数组怎么定义楼主新手,发现给的一维和二维例程都是逻辑的0和1 ,非常苦恼
    发表于 05-14 16:24

    Python中常用的数据类型

    ~9223372036854775807。long(长整型)Python长整型没有指定位宽,但是由于机器内存有限,使用长的长整数数值也不可能无限大。float(浮点型)浮点型也就是带有小数点的数,其
    发表于 04-19 15:14

    3分钟看懂Python面向对象

    Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。正因为如此,在Python中创建一个
    发表于 06-08 14:20

    总结:一文了解Python中的数字类型

    支持三种不同的数字类型,整数、浮点数和复数。 整数通常被称为整型,数值为正或者负,不带小数点。python 3的整型可以当做Long类型使用,所以python 3 没有
    发表于 09-26 16:49

    详谈Python的数据模型和对象模型

    Python官方文档说法是“Python数据模型”,大多数Python书籍作者说法是“Python对象模型”,它们是一个意思,表示“计算机编
    的头像 发表于 02-10 15:59 2556次阅读
    详谈<b class='flag-5'>Python</b>的数据模型和<b class='flag-5'>对象</b>模型

    python二八十六进制整数转换

    python的整数数字可以用二、八、十六不同进制表示,它们可以和十进制相互转换。python数字可以进行位操作。
    的头像 发表于 03-10 09:59 1418次阅读

    Python中的类和对象详解

    Python 是一种面向对象的编程语言,它支持类和对象。类是一种用户自定义的数据类型,用于定义对象的属性和方法。对象是类的实例,它包含类的属
    的头像 发表于 04-20 16:53 1143次阅读

    使用Teachable Machine和Python轻松进行对象检测

    电子发烧友网站提供《使用Teachable Machine和Python轻松进行对象检测.zip》资料免费下载
    发表于 06-27 09:26 0次下载
    使用Teachable Machine和<b class='flag-5'>Python</b>轻松进行<b class='flag-5'>对象</b>检测

    python如何保留一位小数

    本文将详细介绍Python中保留一位小数的方法。我们将探讨浮点数的基本概念,并提供多种方法来实现精确的小数保留。无论是使用内置函数还是第三方库,我们将详细解释它们的原理和用法。希望通过阅读本文,您将
    的头像 发表于 11-23 16:37 2030次阅读

    mysql中decimal的用法

    MySQL中的DECIMAL是用于存储精确数值的数据类型。DECIMAL可以存储固定精度和小数位数的值。在MySQL中,DECIMAL数据类型有两个参数:精度和
    的头像 发表于 11-30 10:45 1092次阅读

    decimal类型怎么插数

    DecimalPython中的一个内置模块,用于处理浮点数操作,它提供了更高精度和更精确的结果。在Python中,我们可以使用Decimal类型来插入和处理
    的头像 发表于 11-30 10:49 557次阅读

    decimal类型怎么定义

    decimal类型是一种用于表示十进制数的数据类型。与浮点数类型不同,decimal类型提供了更高的精确度,对于需要精确计算的场景非常有用。在很多编程语言中,如C#、Java和Python,都支持
    的头像 发表于 11-30 10:52 1561次阅读

    数据库中decimal是什么类型

    数据库中decimal是一种用于存储精确小数的数据类型。在数据库中,decimal常用于存储货币金额、科学计算和需要精确计算的场景。本文将详尽、详实、细致地探讨decimal的定义、存
    的头像 发表于 11-30 11:02 5729次阅读

    数据库decimal对应java什么类型

    、货币计算以及其他需要高精度计算的场景下, BigDecimal 是一个非常重要的数据类型。 在数据库中, decimal 类型通常用于存储具有固定精度和小数位数的数值。与其他基本的数值类型(如整型
    的头像 发表于 11-30 11:06 3868次阅读