truncar numeros limitar formato float decimales con clase java formatting decimal-point

numeros - ¿Cómo mostrar una salida de datos flotantes con 2 decimales en Java?



numeros decimales en java (12)

¿Puedo hacerlo con System.out.print ?


Mira DecimalFormat

Aquí hay 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 como "###. ##", obtendrá dos decimales, y creo que los valores se redondean hacia arriba. Deberá consultar el enlace para obtener el formato exacto que desea (por ejemplo, si desea ceros al final)



OK - str para flotar.

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)


Puede usar el método printf , así:

System.out.printf("%.2f", val);

En resumen, la sintaxis %.2f le dice a Java que devuelva su variable ( val ) con 2 decimales ( .2 ) en representación decimal de un número de coma flotante ( f ) desde el inicio del especificador de formato ( % ).

Hay otros caracteres de conversión que puede usar además de f :

  • d : entero decimal
  • o : entero octal
  • e : punto flotante en notación científica

Puedes usar DecimalFormat . Una forma de usarlo:

DecimalFormat df = new DecimalFormat(); df.setMaximumFractionDigits(2); System.out.println(df.format(decimalNumber));

Otro es construirlo usando 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.


Solo haga String str = System.out.printf("%.2f", val).replace(",", "."); si desea asegurarse de que independientemente de la configuración regional del usuario, siempre obtendrá / mostrará un "." como separador decimal. Esto es obligatorio si no desea que su programa se cuelgue si posteriormente realiza algún tipo de conversión como float f = Float.parseFloat(str);


Sugeriría usar String.format() si necesitas el valor como una String en tu código.

Por ejemplo, puede usar String.format() de la siguiente manera:

float myFloat = 2.001f; String formattedString = String.format("%.02f", myFloat);


Un truco simple es generar una versión más corta de tu variable multiplicándola por ej. 100 , redondeándola y dividiéndola por 100.0 nuevo. De esta forma generas una variable, con 2 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 lo estoy aprendiendo).


pequeño programa simple 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); } }


double d = 1.234567; DecimalFormat df = new DecimalFormat("#.##"); System.out.print(df.format(d));


float f = 102.236569f; DecimalFormat decimalFormat = new DecimalFormat("#.##"); float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24


float floatValue=22.34555f; System.out.print(String.format("%.2f", floatValue));

La salida es 22.35. Si necesita 3 decimales, cámbielo a "% .3f".