首页 > 解决方案 > 在字符串中添加 2 个十进制数字,保持精度

问题描述

我有 2 个字符串,每个字符串都包含一个十进制数,我们可以假设它们具有相同的精度。

我不能只对精度进行硬编码,因为这些字符串集有时可能具有不同的精度。

我只是想将它们的两个值相加,并让总和保持上述值的精度。

其中一个值可能有负数,这就是为什么我想避免字符串拼接,这是我最初的想法。

我的代码:

str1 = "0.16107000" 
str2 = "0.00000270"
total = abs(float(str1)) + abs(float(str2))
print("Total is " + str(total))

输出:

Total is 0.16107269999999999

期望的输出:

Total is 0.16107270

另一个让事情变得更棘手的例子:

str1 = "70.00000000" 
str2 = "0.00131251"

我需要总数70.00131251

最好的方法是什么?

标签: pythonpython-3.xmathrounding

解决方案


from decimal import *
getcontext().prec = 8
str1 = "0.16107000" 
str2 = "0.00000270"
total = Decimal(str1)+Decimal(str2)
print("Total is " + str(total))
# Total is 0.16107270

推荐阅读