float精度丢失问题解决,用decimal.Decimal

Posted xiaofeng91

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了float精度丢失问题解决,用decimal.Decimal相关的知识,希望对你有一定的参考价值。

首先来看一个浮点数运算:下面,当2个float类型数据,进行运算,就不能保证精度

a = 0.1
b = 0.3
print(a)
print(b)
print(b-a)

技术图片


那么,怎么让上面的减法值,得到我们想要的 0.2 呢?导入 decimal模块,如果要不丢失精度Decimal类中必须要接收的是 str类型,如果还是传入 float类型,那么精度还是会丢失

 

import decimal
a = 0.1
b = 0.3
print(decimal.Decimal(str(b)) - decimal.Decimal(str(a)))
print(decimal.Decimal(b) - decimal.Decimal(a))

技术图片

以上是关于float精度丢失问题解决,用decimal.Decimal的主要内容,如果未能解决你的问题,请参考以下文章

iOS - Json解析精度丢失处理(NSString, Double, Float)

BigDecimal精度丢失问题

iOS数据解析精度丢失

Float,Double转换为JSON后精度丢失和小数位数为.0时被忽略

java丢失精度问题

一篇文章带你深入探讨 DECIMAL 解决 MySQL 数据精度丢失问题