【发布时间】:2019-08-09 09:16:59
【问题描述】:
我有 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
最好的方法是什么?
【问题讨论】:
-
这是个骗人的问题
-
“精度”是指小数位吗? (还有其他测量精度的方法,例如有效数字。)可能出现的最大小数位数和有效数字是多少?您使用的是哪个版本的 Python?
-
正确,小数位。我正在使用 Python 3.7。小数点后的最大位数为 8。
标签: python python-3.x math rounding