python利用Decimal处理浮点数计算的精度问题

之前在学习Django中ORM的时候,一直不明白怎么有一个数据类型叫Decimal。直到最近在一个项目中遇到了小数点计算的问题,发现要解决小数计算的精度问题,还真得用到这个Decimal不可。

问题描述

浮点数在内存中存储的时候因为存储机制的原因,天然存在精度丢失的现象,具体原因这里不赘述了,感兴趣的朋友可以参考另一篇博客《浮点型数据精度丢失实例详解》

a=2.2
a*3
Out[16]: 6.6000000000000005

本来期望的结果是6.6,结果小数点后多出来一长串。如果是对数字不敏感的项目其实是没问题的,但是如果涉及到金融领域,例如电商的购物车价格计算,银行余额的计算,小数点后10几位多个5也都是不能容忍的。

所以有能力精确进行浮点数计算还是有必要的。

解决办法

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值