2010-03-29 4 views

risposta

158

È possibile utilizzare il metodo printf, in questo modo:

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

In breve, la sintassi %.2f dice Java per restituire la variabile (val) con 2 cifre decimali (.2) in rappresentazione decimale di un floating numero di punto (f) dall'inizio dello specificatore di formato (%).

Ci sono altri caratteri di conversione è possibile utilizzare oltre f:

  • d: intero decimale
  • o: ottale intero
  • e: virgola mobile in notazione scientifica
+8

Si prega di prestare attenzione poiché String.format dipende dalla configurazione locale corrente, non si può ottenere un punto come separatore. Preferisci usare 'String.format (java.util.Locale.US,"%. 2f ", val);' – Gomino

+1

@gomino Perché non 'Locale.FRANCE'? – erickson

+0

@erickson in Francia il separatore decimale è una virgola e non un punto. – Gomino

130

È possibile utilizzare DecimalFormat. Un modo per usarlo:

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

altro è costruirlo utilizzando il formato #.##.

Trovo tutte le opzioni di formattazione meno leggibili rispetto al richiamo dei metodi di formattazione, ma è una questione di preferenza.

+10

quanto accaduto con lo System.out.printf '' sintassi (, valore "% 2F.")? È ancora in giro? –

+5

lo è. è ancora un'opzione - è possibile annullare l'eliminazione della risposta;) – Bozho

+0

Sembra che sia la mia opzione, in quanto non so ancora come utilizzare DecimalFormat :) Grazie! –

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

Ciao Kevin, se inserissi 10.0000, ricevo solo 10. Se voglio visualizzare le 10.00, allora come posso fare? – Mdhar9e

+1

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

4

Vedere DecimalFormat

Ecco un esempio dal tutorial:

DecimalFormat myFormatter = new DecimalFormat(pattern); 
    String output = myFormatter.format(value); 
    System.out.println(value + " " + pattern + " " + output); 

Se si sceglie un modello simile, si otterrà due cifre decimali, e penso che i valori sono arrotondati "### ##". su. Dovrai esaminare il link per ottenere il formato esatto desiderato (ad esempio, se desideri zeri finali)

57

Si consiglia di utilizzare String.format() se è necessario il valore come String nel codice.

Ad esempio, è possibile utilizzare String.format() nel seguente modo:

float myFloat = 2.001f; 

String formattedString = String.format("%.02f", myFloat); 
+8

"% .02f" e "% .2f" sono la stessa cosa – Borzh

2

OK - str a stare a galla.

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

    } 
} 

uscita:

run: 
[Original]: 0.09 
[Local]: 0.10 
[Remote]: 0.10 
BUILD SUCCESSFUL (total time: 0 seconds) 
6

un semplice trucco è quello di generare una versione più breve della variabile moltiplicando con per esempio100, arrotondandolo e dividendolo di nuovo tramite 100.0. In questo modo si genera una variabile, con 2 cifre decimali:

double new_variable = Math.round(old_variable*100)/100.0; 

questo "trucco a buon mercato" è stato sempre abbastanza buono per me, e lavora in qualsiasi lingua (io non sono una persona Java, solo l'apprendimento di esso) .

+1

Questo è sbagliato, molti numeri ripetono i numeri in rappresentazione float dopo aver diviso per 100. Quindi non due cifre decimali. – matt

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

L'uscita è 22,35. Se sono necessari 3 punti decimali, cambiarlo in "% .3f".

1

piccolo programma semplice per la dimostrazione:

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

In base alle impostazioni locali è possibile ottenere una virgola. Se si desidera un separatore di punti, utilizzare questo: DecimalFormat ("#. ##", DecimalFormatSymbols (Locale.US)) – DPM