我对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
这显示了如何使用旧的%
格式化方法用两个小数点格式化输出的示例:
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
或者,您可以使用"new and improved".format()函数,该函数将存在一段时间,值得了解。以下将生成与上述相同的输出:
print '{:8.2f} {:8.2f}'.format(v1, v2)
print '{:8.2f} {:8.2f}'.format(v3, v4)
两组格式化指令都为数字分配了8个空格,将其格式化为小数点后有2位数字的浮点值。你必须调整这些值以适应你的需求。
我认为,使用这种方法来格式化输出会更容易,因为.format()
会让你对输出有的控制权(包括证明、填充、精度)。
Python格式规范迷你语言
print(f'{symbol:<5}: {name:<44} {buyprices:>10.2f} change: {val:>5.2f}')
输出:
AXP : American Express Company 55.38 change: -1.15
AXR : Amrep Corp. 6.54 change: 0.00
工作原理:
<44 (left justified, 44 places)
>5.2f (right justified, 5 places, 2 decimal places)
没关系,我当然是在发布问题后就明白了。。。
更改为:
def change_value(self, sym, buy, sell):
self.sym = sym
temp = float(buy) - float(sell)
self.val = "%.2f" % temp
然后称为str(Instance1.val).rjust(10)