¿Puedo hacerlo con System.out.print
?¿Cómo mostrar una salida de datos flotantes con 2 decimales en Java?
Respuesta
Usted puede utilizar el método printf
, así:
System.out.printf("%.2f", val);
En pocas palabras, la sintaxis de Java dice %.2f
para devolver su variable (val
) con 2 decimales (.2
) en representación decimal de un flotante número de punto (f
) desde el inicio del especificador de formato (%
).
Hay otros personajes de conversión se puede utilizar además de f
:
d
: entero decimalo
: entero octale
: de punto flotante en notación científica
Puede usar DecimalFormat
. Una forma de usarlo:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
Otro es para construirlo utilizando el formato #.##
.
Encuentro que todas las opciones de formato son menos legibles que llamar a los métodos de formateo, pero esa es una cuestión de preferencia.
lo que sucedió con el '' System.out.printf sintaxis (valor "% 2f.")? ¿Todavía está por aquí? –
es. sigue siendo una opción; puede recuperar su respuesta;) – Bozho
Parece que es mi opción, ya que todavía no sé cómo usar DecimalFormat :) ¡Gracias! –
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
Hola Kevin, si si ingresas 10.0000, obtendré solo 10. Si quiero mostrar 10.00, ¿cómo puedo hacer? – Mdhar9e
@ Mdhar9e use 'DecimalFormat df = new DecimalFormat (" 0.00 ");' –
Mire DecimalFormat
Aquí se muestra un ejemplo del tutorial:
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
Si elige un patrón similar, obtendrá dos decimales, y creo que los valores se redondean "### ##". arriba. Deberá consultar el enlace para obtener el formato exacto que desea (por ejemplo, si desea ceros al final)
Mucha gente ha mencionado DecimalFormat
. Pero también se puede utilizar printf
si tiene una versión reciente de Java:
System.out.printf("%1.2f", 3.14159D);
See the docs on the Formatter for more information about the printf format string.
Sugeriría usar String.format() si necesita el valor como String
en su código.
Por ejemplo, puede utilizar String.format()
de la siguiente manera:
float myFloat = 2.001f;
String formattedString = String.format("%.02f", myFloat);
"% .02f" y "% .2f" es lo mismo – Borzh
OK - str flote.
package test;
import java.text.DecimalFormat;
public class TestPtz {
public static void main(String[] args) {
String preset0 = "0.09,0.20,0.09,0.07";
String[] thisto = preset0.split(",");
float a = (Float.valueOf(thisto[0])).floatValue();
System.out.println("[Original]: " + a);
a = (float) (a + 0.01);
// Part 1 - for display/debug
System.out.printf("[Local]: %.2f \n", a);
// Part 2 - when value requires to be send as it is
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(2);
System.out.println("[Remote]: " + df.format(a));
}
}
Salida:
run:
[Original]: 0.09
[Local]: 0.10
[Remote]: 0.10
BUILD SUCCESSFUL (total time: 0 seconds)
Un truco sencillo es generar una versión más corta de la variable de multiplicándola por ejemplo,100
, redondeándola y dividiéndola por 100.0
nuevamente. De esta manera se genera una variable, con 2 cifras decimales:
double new_variable = Math.round(old_variable*100)/100.0;
este "truco barato" siempre fue lo suficientemente bueno para mí, y funciona en cualquier idioma (no soy una persona de Java, simplemente aprenderlo) .
Esto es incorrecto, muchos números repetirán números en representación flotante después de dividir por 100. Por lo tanto, no dos decimales. – matt
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));
La salida es 22.35. Si necesita 3 decimales, cámbielo a "% .3f".
pequeño programa sencillo para la demostración:
import java.io.*;
import java.util.Scanner;
public class twovalues {
public static void main(String args[]) {
float a,b;
Scanner sc=new Scanner(System.in);
System.out.println("Enter Values For Calculation");
a=sc.nextFloat();
b=sc.nextFloat();
float c=a/b;
System.out.printf("%.2f",c);
}
}
float f = 102.236569f;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
Según la configuración regional, es posible que obtenga una coma. Si quiere un separador de puntos, use esto: DecimalFormat ("#. ##", DecimalFormatSymbols (Locale.US)) – DPM
- 1. Porcentaje de Java para mostrar decimales
- 2. ¿Cómo puedo mostrar más decimales en la consola de salida?
- 3. Cómo mostrar con n decimales en Matlab
- 4. Cómo mostrar solo los primeros 2 decimales desiguales a 0
- 5. Validar valor decimal a 2 decimales con anotaciones de datos?
- 6. Doctrine 2 - 2 lugares decimales en una carroza?
- 7. cómo mostrar los datos en la matriz con más de 4 decimales
- 8. Mostrar siempre decimales en SQL?
- 9. Convertir un número a 2 decimales en Java
- 10. ¿Cómo redondeo a 2 decimales?
- 11. Números flotantes en Java
- 12. números decimales fijos con JAVA
- 13. ajuste a 2 decimales
- 14. Ronda a 2 cifras decimales
- 15. Mostrar salida CMD en mi GUI (java)
- 16. forzar una cadena a 2 decimales
- 17. ¿Cómo formatear una columna DBGrid para mostrar dos lugares decimales?
- 18. Cómo mostrar y editar datos de 2 tablas en phpmydatagrid
- 19. doble formato de 2 decimales con los principales 0s
- 20. ¿Cómo mostrar correctamente un precio de hasta dos decimales (centavos) incluyendo los ceros finales en Java?
- 21. ¿Cómo se leen los números flotantes (real) de una base de datos SQLite en el iPhone?
- 22. ¿Cómo redondear cada artículo en una lista de carrozas a 2 decimales?
- 23. que muestran el número de 2 cifras decimales en gridview
- 24. Android - Ronda a 2 cifras decimales
- 25. Manipulación y comparación de puntos flotantes en java
- 26. Formateo de un flotante con dos decimales
- 27. Redondeo a 2 lugares decimales
- 28. ¿Cómo mostrar la estructura de datos planos en una estructura de datos jerárquica (Java)?
- 29. número redondo a 2 decimales
- 30. Mostrar números sin puntos decimales
Tenga en cuenta que como String.format depende de su configuración local actual, es posible que no obtenga un punto como separador. Prefiere usar 'String.format (java.util.Locale.US,"%. 2f ", val);' – Gomino
@gomino ¿Por qué no 'Locale.FRANCE'? – erickson
@erickson en Francia, el separador decimal es una coma y no un punto. – Gomino