python的decimal

        Python自带的decimal模块用于十进制数学计算,它是在浮点类型的基础上设计的,可以非常精确地在计算机中存储和计算,精度优于floating point,因为浮点数并不能精确的表示十进制数,因为计算机由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征,因此对于精度要求高但效率不要求的场景,比如财务等,decimal可以较好的替换float类型。

        Decimal重载了简单的算术运算符,所以可以采用内置数值类型同样的方式处理 Decimal实例。Decimal构造函数取一个整数或字符串作为参数。使用浮点数创建 Decimal 之前,可以先将浮点数转换为一个字符串,使调用者能够显式地处理值得位数,还可以由元组创建,其中包含一个符号标志(0 表示正,1 表示负)、数字 tuple 以及一个整数指数。 

>>> 
>>> f1 = 1.23
>>> f2 = 3.21
>>> f1 + f2
4.4399999999999995
>>> 
>>> from decimal import Decimal
>>> from decimal import getcontext
>>> 
>>> d1 = Decimal('1.23')
>>> d2 = Decimal('3.21')
>>> d3 = d1 + d2
>>> print(type(d3), d3)
<class 'decimal.Decimal'> 4.44
>>> # 很准,位数也不变
>>> 
>>> 
>>> t1 = (1, (1, 1), -2)
>>> Decimal(t1)
Decimal('-0.11')
>>> t2 = (1, (1, 2), 3)
>>> Decimal(t2)
Decimal('-1.2E+4')
>>> t3 = (0, (1, 2), 3)
>>> Decimal(t3)
Decimal('1.2E+4')
>>> 
>>> str(f3)
'2.468'
>>> 

但相除或相乘的话,小数点的位数还是变了:

>>> 
>>> d4 = d2 /
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值