2010-03-29 14 views

Respuesta

158

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 decimal
  • o: entero octal
  • e: de punto flotante en notación científica
+8

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

+1

@gomino ¿Por qué no 'Locale.FRANCE'? – erickson

+0

@erickson en Francia, el separador decimal es una coma y no un punto. – Gomino

130

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.

+10

lo que sucedió con el '' System.out.printf sintaxis (valor "% 2f.")? ¿Todavía está por aquí? –

+5

es. sigue siendo una opción; puede recuperar su respuesta;) – Bozho

+0

Parece que es mi opción, ya que todavía no sé cómo usar DecimalFormat :) ¡Gracias! –

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

Hola Kevin, si si ingresas 10.0000, obtendré solo 10. Si quiero mostrar 10.00, ¿cómo puedo hacer? – Mdhar9e

+1

@ Mdhar9e use 'DecimalFormat df = new DecimalFormat (" 0.00 ");' –

4

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)

57

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); 
+8

"% .02f" y "% .2f" es lo mismo – Borzh

2

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) 
6

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) .

+1

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

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

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

1

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); 
    } 
} 
7
float f = 102.236569f; 
DecimalFormat decimalFormat = new DecimalFormat("#.##"); 
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24 
+2

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

Cuestiones relacionadas