python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python decimal.Decimal和float类型比较

Python中decimal.Decimal类型和float类型的比较

作者:飞翔的宫保鸡丁

这篇文章主要介绍了Python中decimal.Decimal类型和float类型的比较,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python decimal.Decimal和float类型比较

1,class 'decimal.Decimal' 转换成float类型

例如:

四色五入,保留两位小数 传入参数可以为字符串也可以为整数

num01 = Decimal(2.333).quantize(Decimal('0.00'))

此时 num01 类型为 'decimal.Decimal' ,需要转化成float类型在与浮点型作比较;

num01 = float(num01)

2,class 'decimal.Decimal' 转换成strt类型

num01 = str(Decimal(2.333).quantize(Decimal('0.00')))

num02 = str(float(2.33))

最后再做比较;

decimal报错:decimal.InvalidOperation: [<class ‘decimal.ConversionSyntax‘>]

from decimal import *
sum_vol=0
sum_rev=0
sum_gp=0
list2=['5\n457.5\n363.4\n4\n1\n0.5\n-5,847.9', '900\n247.1\n-22.3\n800\n100\n24.7\n26.9']
for xx in list2[:]:
    x = xx.split('\n')
    x[0] = x[0].replace(',', '')
    x[3] = x[3].replace(',', '')
    x[4] = x[4].replace(',', '')
    # x[6] = x[6].replace(',', '')
    sum_vol += Decimal(x[-3])
    sum_rev += Decimal(x[-2])
    sum_gp += Decimal(x[-1])
print(sum_vol)
print(sum_rev)
print(sum_gp)

运行结果报错:

分析

有3个求和,只有sum_gp报错了,原来是有个逗号

只需加上x[6] = x[6].replace(’,’, ‘’),就不会报错了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文