python - 在字符串中添加 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
最好的方法是什么?
解决方案
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
推荐阅读
- linux - 如何将 Jenkins 主目录从 /var/lib 更改为 app 并为原始位置创建符号链接,因为作业不会受到影响
- vba - 检查 Word 表格的单元格是否为空 - 包含“标记”的空单元格
- firebase - 数据何时在 Firestore 中实际传输?在文档快照中?或者直到 .data() 或 .get() 被调用?
- html - 获取覆盖以覆盖图像的问题
- sql - 分组导致的行数超过所需行数
- docker - 如何在使用 Dockerfile 构建映像时读取 .env 文件?
- python - 获得字典中特征之间的正相关和负相关
- php - 覆盖 FOSUserBundle EmailConfirmationListener 方法“__construct()”的错误参数“$mailer”
- c# - 起订量验证或全部验证
- php - 如果php中使用了另一个标签,如何读取xml标签?