对于精度要求不高的计算,你可以使用float类型,但你需要明白,float并不能够实现高精度计算,比如0.10 + 0.20
print(0.10 + 0.20) # 0.30000000000000004
之所以出现这种情况是因为浮点数在计算机中实际是以二进制保存的,有些数并不精确,因此在金融等需要高精度计算领域里,高精度计算时就不能使用float类型,而是用decimal模块
import decimal
a = decimal.Decimal('0.10')
b = decimal.Decimal('0.20')
c = a + b
print(c) # 0.30
这里切记不要传入flaot类型,因为float本身就不准确,你可以传入字符串或者int类型数据。
通过设置有效数字可以决定小数点后有效位数
import decimal
decimal.getcontext().prec = 6
print(decimal.Decimal(1)/decimal.Decimal(7)) # 0.142857
print(1/7) # 0.14285714285714285
在截取有效位数时,遵守四舍五入机制,你也可以使用quantize方法来决定保留几位小数
import decimal
res = decimal.Decimal(1)/decimal.Decimal(7)
print(res) # 0.1428571428571428571428571429
res = res.quantize(decimal.Decimal('0.000')) # 四舍五入,保留3位有效数字
print(res) # 0.143
QQ交流群: 211426309