También puede usar una configuración regional específica usandoString.format(Locale.GERMAN, "%1$,.2f", myDouble);
Olivier Grégoire
13
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
44
Creo que el "% 1 $" es opcional en este caso. Funciona para mí con solo "% ,. 2f" como el formato de cadena.
Matt Passell el
55
Sí, Matt tiene razón. %1, %2y así sucesivamente se puede utilizar para reordenar la salida en función del índice de sus argumentos de entrada. Mira esto . Puede omitir el índice y el formateador asumirá el orden predeterminado.
praneetloke
1
Debe dar una explicación de lo que significan las diferentes partes.
Mitulát báti
41
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. Y f es el especificador de formato de doble. x significa la variable para la que queremos encontrarlo. Trabajó para mi . . .
Creo que significa que será la cuarta variable en los argumentos que siguen y tendrá 3 lugares después del decimal.
Michael Fulton
@MichaelFulton No es tan fácil: String.format("%014.3f" , 58.656565)-> 0000000058,657: 14 símbolos en total: 8 ceros y 5 números y 1 coma. Entonces, en este caso, número 14significa el número total de símbolos (los adicionales se reemplazan con cero a la izquierda, podrían ir sin, luego se reemplazarían con espacio) en la cadena de resultados . La .3parte es completamente independiente aquí.
analizador
Sin embargo aquí: String.format("%014.3f" , 58.656565)-> 58,657. Lo tomo porque la preferencia va a la .3fparte: primero imprime el número con 3 decimales y luego, si quedan símbolos , imprime los espacios iniciales (o ceros / lo que sea). En este caso, el número es 2 + 3 + 1 = 6 símbolos y solo queríamos imprimir 4, por lo que ciertamente no hay espacios adicionales.
analizador
24
Si desea formatearlo con símbolos establecidos manualmente, use esto:
Respuesta útil! Sin embargo, la última oración "Sin embargo, se prefiere el formato basado en la configuración regional" no tiene sentido sin contexto. Hay casos de uso bastante buenos en los que NO debe usar el formato basado en la configuración regional, cuando desea generar un formato específico de la Cadena. Por ejemplo, está implementando la exportación de sus datos a un archivo externo y desea tener un control total sobre el formato, sin depender de la configuración regional actual (o alguna).
3 (3) +3 00003
Formato de punto flotante predeterminado: 1234567,123000 Punto
flotante con comas: 1.234.567,123000
Valor predeterminado de punto
flotante negativo : -1.234.567,123000 Opción de punto flotante negativo: (1.234.567, 123000)
Alineación de valores positivos y negativos:
1.234.567,12
-1.234.567,12
String.format(Locale.GERMAN, "%1$,.2f", myDouble);
%1, %2
y así sucesivamente se puede utilizar para reordenar la salida en función del índice de sus argumentos de entrada. Mira esto . Puede omitir el índice y el formateador asumirá el orden predeterminado.Significa que necesitamos un total de 4 dígitos en ans, de los cuales 3 deben ser después del decimal. Y f es el especificador de formato de doble. x significa la variable para la que queremos encontrarlo. Trabajó para mi . . .
fuente
String.format("%014.3f" , 58.656565)
->0000000058,657
: 14 símbolos en total: 8 ceros y 5 números y 1 coma. Entonces, en este caso, número14
significa el número total de símbolos (los adicionales se reemplazan con cero a la izquierda, podrían ir sin, luego se reemplazarían con espacio) en la cadena de resultados . La.3
parte es completamente independiente aquí.String.format("%014.3f" , 58.656565)
->58,657
. Lo tomo porque la preferencia va a la.3f
parte: primero imprime el número con 3 decimales y luego, si quedan símbolos , imprime los espacios iniciales (o ceros / lo que sea). En este caso, el número es 2 + 3 + 1 = 6 símbolos y solo queríamos imprimir 4, por lo que ciertamente no hay espacios adicionales.Si desea formatearlo con símbolos establecidos manualmente, use esto:
Sin embargo, se prefiere el formato basado en la configuración regional.
fuente
código extraído de este enlace ;
El resultado de este ejemplo muestra cómo varía el formato del mismo número con la configuración regional:
fuente
E imprima:
fuente
Hay muchas formas de hacer esto. Esos se dan a continuación:
Suponga que su número original se muestra a continuación: número doble = 2354548.235;
Uso
NumberFormat
y modo de redondeoUsando el formateador de cadenas
En todos los casos el resultado será: 2354548.24
Nota :
Durante el redondeo puede agregar
RoundingMode
su formateador. Aquí hay algunos modos de redondeo dados a continuación:Aquí están las importaciones :
fuente
Utilizar
DecimalFormat
fuente