2012-01-08 17 views
16

Voglio convertire un numero in 2 posizioni decimali (Mostra sempre due posizioni decimali) in runtime. Ho provato un certo codice, ma lo fa solo, come illustrato di seguitoConverti un numero in 2 decimali in Java

20.03034 >> 20.03 
20.3 >> 20.3 (my code only rounds not converts) 

però, lo voglio fare questo:

20.03034 >> 20.03 
20.3 >> 20.30 (convert it to two decimal places) 

mio codice qui sotto:

angle = a variable 
angle_screen = a variable 

DecimalFormat df = new DecimalFormat("#.##"); 
angle = Double.valueOf(df.format(angle)); 
angle_screen.setText(String.valueOf(angle) + tmp); 

Qualsiasi aiuto su come fare questo sarebbe fantastico, grazie.

+0

Il codice è imperfetto in qualche modo. Converti un doppio in una stringa con un formato speciale. Quindi lo converti in doppio e poi lo converti in una stringa senza specificare alcun formato. Immagino che sia sbagliato. Anche lo scopo della variabile 'tmp' non è ovvio. – Robert

+2

Dovresti leggere l'API 'DecimalFormat' - la risposta è lì ed è abbastanza chiaro. – Paul

+1

possibile duplicato di [Arrotondare un doppio a 2 cifre significative dopo il punto decimale] (http://stackoverflow.com/questions/2808535/round-a-double-to-2-significant-figures-after-decimal-point) –

risposta

52

provare questo aggiornamento new DecimalFormat("#.00");

:

double angle = 20.3034; 

    DecimalFormat df = new DecimalFormat("#.00"); 
    String angleFormated = df.format(angle); 
    System.out.println(angleFormated); //output 20.30 

Il codice non stava usando il DecimalFormat correttamente

Il 0 nel modello significa una cifra obbligatoria, il # significa cifre opzionale .

aggiornamento 2: controllo Bellow rispondere

Se volete 0.2677 formattati come 0.27 si dovrebbe usare new DecimalFormat("0.00"); altrimenti sarà .27

+1

Non funziona:/ –

+0

Ho capito .. Ho aggiornato la risposta –

+0

Sì 100% funziona, grazie –

2

Prova

DecimalFormat df = new DecimalFormat("#,##0.00"); 
+0

Non funziona:/ –

15

Prova questa: String.format("%.2f", angle);

+2

La migliore risposta per quelli con API minima inferiore a 24! Grazie! :) – Necroqubus

+0

@Necroqubus Prego! :) – Jagger

18
DecimalFormat df=new DecimalFormat("0.00"); 

Utilizzare questo codice per ottenere due punti decimali esatti. Anche se il valore è 0.0, restituirà 0.00 come output.

Invece se si utilizza:

DecimalFormat df=new DecimalFormat("#.00"); 

E 'abitudine convertire 0,2659 in 0,27. Riceverai una risposta come .27.

+5

perché questo non ha più voti ?!è un'informazione importante che dovrebbe essere aggiunta alla risposta accettata – sports

+0

perché non converte il mio valore float 98786545/10^6 in due formati decimali. Dopo averlo convertito in due decimali, voglio salvarlo come stringa. –

+0

@sports \t Richiede il livello API 24 quindi soluzione piuttosto scadente per progetti con compatibilità – Necroqubus

Problemi correlati