Posso farlo con System.out.print
?Come visualizzare un output di dati float con 2 posizioni decimali in Java?
risposta
È 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 decimaleo
: ottale interoe
: virgola mobile in notazione scientifica
È 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.
quanto accaduto con lo System.out.printf '' sintassi (, valore "% 2F.")? È ancora in giro? –
lo è. è ancora un'opzione - è possibile annullare l'eliminazione della risposta;) – Bozho
Sembra che sia la mia opzione, in quanto non so ancora come utilizzare DecimalFormat :) Grazie! –
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
Ciao Kevin, se inserissi 10.0000, ricevo solo 10. Se voglio visualizzare le 10.00, allora come posso fare? – Mdhar9e
@ Mdhar9e usa 'DecimalFormat df = new DecimalFormat (" 0.00 ");' –
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)
Molte persone hanno menzionato DecimalFormat
. Ma si può anche utilizzare printf
se si dispone di una versione recente di Java:
System.out.printf("%1.2f", 3.14159D);
See the docs on the Formatter for more information about the printf format string.
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);
"% .02f" e "% .2f" sono la stessa cosa – Borzh
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)
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) .
Questo è sbagliato, molti numeri ripetono i numeri in rappresentazione float dopo aver diviso per 100. Quindi non due cifre decimali. – matt
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));
L'uscita è 22,35. Se sono necessari 3 punti decimali, cambiarlo in "% .3f".
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);
}
}
float f = 102.236569f;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
In base alle impostazioni locali è possibile ottenere una virgola. Se si desidera un separatore di punti, utilizzare questo: DecimalFormat ("#. ##", DecimalFormatSymbols (Locale.US)) – DPM
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
@gomino Perché non 'Locale.FRANCE'? – erickson
@erickson in Francia il separatore decimale è una virgola e non un punto. – Gomino