python - 在字符串中添加 2 个小数,保留精度

标签 python python-3.x math rounding

我有 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

执行此操作的最佳方法是什么?

最佳答案

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

关于python - 在字符串中添加 2 个小数,保留精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57426963/

相关文章:

python - PyQt5 在类外添加和删除选项卡

ruby - 算术在 ruby 中给出了意想不到的值(value)

python - 如何使用Python中的数学模块生成随机 float

python - 从嵌套 for 循环到字典理解?

python - 在Python中使用for循环时重置变量

python-3.x - 如果包含字符串列表,则过滤 pyspark 数据框

java - 为什么这两个表达式产生相同的值?

python - 在 Python 中搜索和替换文件中的一行

python - Travis 没有启动多个 python 版本的作业

python - 集合中的命名约定 : why are some lowercase and others CapWords?