【发布时间】:2010-05-04 00:03:27
【问题描述】:
我想减去 Python 中的两个浮点数,即
v1 = float(value1)
v2 = float(value2)
diff = v1 - v2
我希望将“差异”计算到小数点后两位,即使用 v1 的 %.2f 和 v2 的 %.2f 计算它。我怎样才能做到这一点?我知道如何将 v1 和 v2 打印到小数点后两位,但不知道如何进行这样的算术运算。
我试图避免的特定问题是这个。假设:
v1 = 0.982769777778
v2 = 0.985980444444
diff = v1 - v2
然后我打印到以下文件:
myfile.write("%.2f\t%.2f\t%.2f\n" %(v1, v2, diff))
然后我会得到输出:0.98 0.99 0.00,表明 v1 和 v2 之间没有区别,即使打印结果表明存在 0.01 的差异。我该如何解决这个问题?
谢谢。
【问题讨论】:
-
我可以通过简单地做:round(v1, 2) 和 round(v2, 2) 来做到这一点吗?如果可能的话,我想避免像十进制这样的额外库。
-
为什么要计算只有 2 个有效数字?以最大精度进行计算并在最后格式化结果有什么问题?您是否混淆了有效数字和小数位?
-
这就是问题所在。如果我在不四舍五入的情况下计算 diff,那么我使用“%.2f”将结果打印到文件中,这意味着我可以将 v1 = 0.982769777778 打印为“0.98”和 v2 = 0.985980444444 打印为“0.99”,而diff 打印为“0.00”,这是一种误导。这就是我想要解决的问题。有什么想法吗?
标签: python floating-point numpy scipy