separador - numeros decimales en java



Forzar punto(".") Como separador decimal en java (4)

Actualmente uso el siguiente código para imprimir un doble:

return String.format("%.2f", someDouble);

Esto funciona bien, excepto que Java usa el separador decimal de mi Locale (una coma) mientras que me gustaría usar un punto. ¿Hay una forma fácil de hacer esto?

https://src-bin.com


Answer #1

Demasiado tarde, pero como otros mencionados aquí es el uso de muestra de NumberFormat (y su subclase DecimalFormat )

public static String format(double num) {
    DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
    decimalSymbols.setDecimalSeparator('.');
    return new DecimalFormat("0.00", decimalSymbols).format(num);
 }

Answer #2

Puede pasar una configuración regional adicional a java.lang.String.format, así como a java.io.PrintStream.printf (por ejemplo, System.out.printf ()):

import java.util.Locale;

public class PrintfLocales {

    public static void main(String args[]) {
        System.out.printf("%.2f: Default locale\n", 3.1415926535);
        System.out.printf(Locale.GERMANY, "%.2f: Germany locale\n", 3.1415926535);
        System.out.printf(Locale.US, "%.2f: US locale\n", 3.1415926535);
    }

}

Esto resulta en lo siguiente (en mi PC):

$ java PrintfLocales
3.14: Default locale
3,14: Germany locale
3.14: US locale

Vea String.format en la API de Java.


Answer #3

Una solución más drástica es establecer su configuración regional al principio de main ().

Me gusta:

Locale.setDefault(new Locale("en", "US"));

Answer #4

Use la sobrecarga de String.format que le permite especificar la configuración regional:

return String.format(Locale.ROOT, "%.2f", someDouble);

Si solo está formateando un número, como está aquí, entonces usar NumberFormat probablemente sería más apropiado. Pero si necesita el resto de las capacidades de formato de String.format , esto debería funcionar bien.





double