2011-02-03 9 views

risposta

231
String.format("%1$,.2f", myDouble); 

String.format utilizza automaticamente la località di default.

+26

È anche possibile utilizzare una locale specifica utilizzando 'String.format (Locale.GERMAN,"% 1 $ ,. 2f ", myDouble);' –

+8

Se è presente più di un doppio da formattare, utilizzare% 1,% 2 e così via. Ad esempio String.format ("% 1 $ ,. 2f,% 2 $ ,. 2f", myDouble, aDouble) – Moesio

+1

I credo che "% 1 $" sia facoltativo in questo caso. Funziona per me con solo "% ,. 2f" come formato String. –

18

codice estratto da this link;

Double amount = new Double(345987.246); 
NumberFormat numberFormatter; 
String amountOut; 

numberFormatter = NumberFormat.getNumberInstance(currentLocale); 
amountOut = numberFormatter.format(amount); 
System.out.println(amountOut + " " + 
        currentLocale.toString()); 

L'uscita da questo esempio mostra come il formato dello stesso numero varia con Locale:

345 987,246 fr_FR 
345.987,246 de_DE 
345,987.246 en_US 
+0

Devo utilizzare il metodo String.format(): '- ( – kike

11
public class MainClass { 
    public static void main(String args[]) { 
    System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3); 

    System.out.printf("Default floating-point format: %f\n", 1234567.123); 
    System.out.printf("Floating-point with commas: %,f\n", 1234567.123); 
    System.out.printf("Negative floating-point default: %,f\n", -1234567.123); 
    System.out.printf("Negative floating-point option: %,(f\n", -1234567.123); 

    System.out.printf("Line-up positive and negative values:\n"); 
    System.out.printf("% ,.2f\n% ,.2f\n", 1234567.123, -1234567.123); 
    } 
} 

e stampare:

3 (3) +3 00003
formato a virgola mobile predefinito: 1234567,123000
virgola mobile con le virgole: 1.234.567,123000
Default a virgola mobile negativo: -1.234.567,123000
Opzione a virgola mobile negativa: (1.234.567,123000)

Line-up positivo e negat valori ive:
1.234.567,12
-1.234.567,12

21

Se si desidera formattare con simboli impostati manualmente, utilizzare questo:

DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(); 
decimalFormatSymbols.setDecimalSeparator('.'); 
decimalFormatSymbols.setGroupingSeparator(','); 
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00", decimalFormatSymbols); 
System.out.println(decimalFormat.format(1237516.2548)); //1,237,516.25 

formattazione Locale-based è preferito, però.

+1

Risposta utile! Tuttavia, l'ultima frase "La formattazione basata su impostazioni internazionali è preferibile, anche se" non ha senso contesto Esistono casi di utilizzo piuttosto buoni in cui NON si deve utilizzare la formattazione basata sulla localizzazione, quando si desidera generare un formato specifico della stringa. Per esempio. stai implementando l'esportazione dei tuoi dati in un file esterno e vuoi avere il pieno controllo sul formato, non dipendente dal locale corrente (o da nessuno). –

24
String.format("%4.3f" , x) ; 

Significa che abbiamo bisogno di 4 cifre totali in ans, di cui 3 dovrebbe essere dopo il decimale. E f è l'identificatore di formato del doppio. x indica la variabile per cui vogliamo trovarla. ha funzionato per me. . .

+0

Penso che significhi che sarà la quarta variabile negli argomenti che seguono e avranno 3 posizioni dopo il decimale. –

Problemi correlati