2011-02-03 12 views

Respuesta

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

String.format utiliza automáticamente la configuración regional predeterminada.

+26

También puede usar una configuración regional específica usando 'String.format (Locale.GERMAN,"% 1 $ ,. 2f ", myDouble);' –

+8

Si hay más de un doble para formatear, use% 1,% 2, y así sucesivamente. Por ejemplo String.format ("% 1 $ ,. 2f,% 2 $ ,. 2f", myDouble, aDouble) – Moesio

+1

I cree que el "% 1 $" es opcional en este caso. Funciona para mí con solo "% ,. 2f" como el formato String. –

18

código extraído de 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()); 

La salida de este ejemplo muestra cómo el formato del mismo número varía con Locale:

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

Tengo que usar el método 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 imprimir:

3 (3) +3 00003
formato de punto flotante defecto: 1234567,123000
de coma flotante por comas: 1.234.567,123000
Valor predeterminado de punto flotante negativo: -1.234.567.12000000
Opción de coma flotante negativa: (1.234.567.12000000)

alineación positiva y negativa Los valores del IVE:
1.234.567,12
-1.234.567,12

21

Si desea dar formato con símbolos establecidos de forma manual, utilice esto:

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 

formato basado en la configuración regional es preferido, sin embargo.

+1

¡Respuesta útil! Sin embargo, la última frase "El formato basado en el entorno local es preferible, aunque" no tiene sentido con el ingenio sin contexto Hay casos de uso bastante buenos en los que NO se debe utilizar el formato basado en la configuración regional, cuando se desea generar un formato específico de la Cadena. P.ej. está implementando la exportación de sus datos a un archivo externo y desea tener control total sobre el formato, sin depender de la configuración regional actual (ni ninguna). –

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

Significa que necesitamos un total de 4 dígitos en ans, de los cuales 3 deben ser después del decimal. Yf es el especificador de formato de doble. x significa la variable para la cual queremos encontrarlo. Funcionó para mí. . .

+0

Creo que significa que será la cuarta variable en los argumentos que siguen y tienen 3 lugares después del decimal. –

Cuestiones relacionadas