Python标准库—decimal模块

decimal

decimal模块为快速正确舍入的十进制浮点运算提供支持。它提供了 float数据类型以外的几个优点:

  • 十进制数字可以准确表示:数字如 1.12.2 在二进制浮点中没有精确的表示。

    >>> 1.1 + 2.2
    3.3000000000000003
    >>> from decimal import Decimal
    >>> Decimal('1.1') + Decimal('2.2')
    Decimal('3.3')
    
  • 精确性延续到算术中。

  • 保留尾随零以表示重要性。

    >>> 1.20*1.30
    1.56
    >>> Decimal('1.20')*Decimal('1.30')
    Decimal('1.5600')
    

常用方法

class decimal.Decimal(value="0", context=None)

  1. 可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确。

    >>> from decimal import *
    >>> Decimal(1.1) + Decimal(2.2)
    Decimal('3.300000000000000266453525910'
    >>> Decimal('1.1') + Decimal('2.2')
    Decimal('3.3')
    
  2. 通过设定有效数字,限定结果样式。

    >>> getcontext().prec = 6
    >>> Decimal(1)/Decimal(7)
    Decimal('0.142857')
    >>> getcontext().prec = 28
    >>> Decimal(1) / Decimal(7)
    Decimal('0.1428571428571428571428571429')
    
  3. 四舍五入,保留几位小数。

    >>> Decimal('12.3456').quantize(Decimal('0.00'))
    Decimal('12.35')
    >>> Decimal('12.3456').quantize(Decimal('1.1'))
    Decimal('12.3')
    

你可能感兴趣的:(Python)