2014-12-12 18 views
5

Sto provando a formattare un float per avere un segno di dollaro davanti al numero. Attualmente sto cercando di farlo stampare 150 spazi dal lato sinistro.

System.out.printf("%150.2f", orderTotal);

questo è quello che sto usando, ma non riesco a capire dove mettere il $ Credo che avrei potuto fare l'intera cosa in una stringa, ma mi chiedevo se esiste un modo per fare quello che sto cercando?

+0

'\ $' funziona? - O aspetta, vuoi 150 spazi a sinistra, quindi stampa '$ + orderTotal'? – Emz

+1

Qualsiasi cosa tu abbia inserito in una stringa di formato al di fuori di un identificatore di formato apparirà esattamente come lo hai messo tu. Qui '% 150.2f' è l'identificatore di formato, quindi qualsiasi cosa tu metti prima o dopo apparirà letteralmente. – ajb

+0

@ajb: Qual è un problema, non è vero, quando si aggiungono 150 spazi sul lato sinistro? – Ryan

risposta

2

Come su

System.out.printf("%150s", String.format ("$%.2f", orderTotal)); 
2
System.out.printf("%150s$%.2f", "", orderTotal); 
1

penso che questo vi darà ciò che si vuole:

System.out.printf("%150s", "$" + String.format("%.2f", orderTotal)); 

Utilizzando %150s si mette sulla strada giusta, credo. Per formattare il float in modo che abbia due posizioni decimali, ma senza aggiungere spazi aggiuntivi a sinistra, basta lasciare il campo della larghezza nell'indicatore di formato.

Suppongo qui di volere che l'intero campo abbia una larghezza di 150; cioè, se la parte di valuta è "$101.20", allora si desidera aggiungere 143 spazi a sinistra. Se effettivamente vuoi 150 spazi indipendentemente dalla quantità, la risposta di Reimeus funzionerà.

Inoltre, considerare l'utilizzo di BigDecimal anziché float o double quando si tratta di valuta. I tipi a virgola mobile non possono gestire esattamente i numeri con cifre decimali.

2

String.format è solo lo strumento sbagliato per l'attività. Check out DecimalFormat.getCurrencyInstance è ciò che si desidera utilizzare.

+0

Si prega di mostrare quale schema si utilizzerà per la domanda dell'OP –