2012-07-15 10 views
8

Jestem trochę początkującym programistą z pythoniem, więc proszę, nie krępuj się. Próbuję wywołać atrybut łańcuchowy rjust, a także określić precyzję dla zmiennoprzecinkowego. Oto wyjściowy kod i próbki (uwaga na 0,00 nie jest uzasadnione w prawo):Wydrukuj float z dokładnością prawą usprawiedliwioną

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

WYJŚCIE:

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

Thanks Levon !!! – siesta

Odpowiedz

16

To pokazuje przykład jak sformatować wyjście z dwóch miejsc po przecinku za pomocą starszą metodę % formatów:

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) 

odpowiedni wyjściowy:

55.39  -1.15 
    6.54  0.00 

Alternatywnie możesz użyć "nowej i ulepszonej" funkcji .format(), która będzie dostępna przez jakiś czas i którą warto poznać. Poniższa wygeneruje taki sam efekt jak wyżej:

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

Oba zestawy dyrektyw formatowania przeznaczyć 8 obowiązuje dla numeru, formatować je jako pływaka z 2 cyfr po przecinku. Będziesz musiał dostosować te wartości do swoich potrzeb.

Stosując to podejście do formatowania wyjścia będzie łatwiej myślę ponieważ .format() daje dużo kontroli nad wyjściowy (wł. Usprawiedliwiał, napełnianie, precyzja).

0

Nieważne, wyobraziłem to się tuż po zaksięgowaniu moje pytanie oczywiście ...

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




and then called str(Instance1.val).rjust(10)