以右对齐的精度打印浮点数

新手上路,请多包涵

我对使用 python 编程有点陌生,所以请放轻松。我正在尝试调用字符串属性 rjust 并指定浮点数的精度。这是代码和示例输出(注意 0.00 没有向右对齐):

 print '%s: %s %s \tchange: %.2f' % (Instance1.symbol.ljust(5),
    Instance1.name.ljust(50), Instance1.buyprices.rjust(10), Instance1.val)

输出:

 AXP  : American Express Company                          55.38  change: -1.15
AXR  : Amrep Corp.                                       6.540  change: 0.00

原文由 siesta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 574
2 个回答

这显示了如何使用较旧的 % 格式化方法将输出格式化为带两个小数点的示例:

 v1 = 55.39
v2 = -1.15
v3 = 6.54
v4 = 0.00

print '%8.2f   %8.2f' % (v1, v2)
print '%8.2f   %8.2f' % (v3, v4)

相应的输出:

    55.39      -1.15
    6.54       0.00

或者,您可以使用“新的和改进的” .format() 函数,该函数将存在一段时间并且值得了解。以下将生成与上面相同的输出:

 print '{:8.2f}  {:8.2f}'.format(v1, v2)
print '{:8.2f}  {:8.2f}'.format(v3, v4)

两组格式化指令都为您的数字分配 8 个空格,将其格式化为小数点后 2 位的浮点数。您必须调整这些值以满足您的需要。

我认为使用这种方法来格式化输出会更容易,因为 .format() 会给你 很多 对输出的控制(包括对齐、填充、精度)。

原文由 Levon 发布,翻译遵循 CC BY-SA 3.0 许可协议

没关系,我当然在发布我的问题后就想通了……

改为:

     def change_value(self, sym, buy, sell):
        self.sym = sym
        temp = float(buy) - float(sell)
        self.val = "%.2f" % temp

然后调用 str(Instance1.val).rjust(10)

原文由 siesta 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题