2012-04-03 8 views
11

In Android, sto impostando il testo di una vista testo come risposta a un calcolo che è un tipo di dati double.Come passare il doppio valore a una vista testo in Android

Quando il valore doppio ha un valore 5, la vista testo riceve la stringa: 5.0.

Codice:

double result = number1/number2; 
String finalresult = new Double(result).toString(); 
textView1.setText(finalresult); 

Come faccio a formattare il testo textView in modo che mostra il valore doppio in un formato coerente?

+0

String finalresult = result + ""; o String finalresult = Double.toString (risultato); –

risposta

28

In Android, assegnare un doppio a un textView:

Uso Double.toString:

result = number1/number2  
String stringdouble= Double.toString(result); 
textview1.setText(stringdouble)); 

oppure è possibile utilizzare il NumberFormat:

Double result = number1/number2; 
NumberFormat nm = NumberFormat.getNumberInstance(); 
textview1.setText(nm.format(result)); 

Per forzare per precisione di 3 unità:

private static DecimalFormat REAL_FORMATTER = new DecimalFormat("0.###"); 
textview1.setText(REAL_FORMATTER.format(result)); 
+0

Questo lo fa a 3 cifre decimali, credo. Se volessi fare 0.00001 * 2, mi darà 0 – Matt9Atkins

+0

penso che Double.toString dovrebbe darti la risposta nella stringa se il tuo risultato sarà 0.0000000000000000001 allora anche ti darà lo stesso. –

+0

Voglio ancora formattare la risposta, ma non essere limitato a 3 posizioni decimali – Matt9Atkins

0

Il modo migliore è

String finalresult = String.valueof(result); 
    textview.setText(finalresult); 
0

Prova questa

TextView tv = (TextView)findViewById(R.id.button1); 
      Double num = (double)4+6; 
      if(num%2==0) { 
       tv.setText(num.intValue()+""); //if you want to remove the decimal place 
      } else { 
       tv.setText(num+""); 
      } 
0

si potrebbe usare NumberFormat e allora si può fare il vostro codice normale:

result = number1/number2  
String finalresult = new Double(result).toString(); 
NumberFormat nf = NumberFormat.getInstance(); 
nf.setMinimumFractionDigits(0); 
nf.setMaximumFractionDigits(0); 
finalresult= nf.format(result); 
textView1.setText(finalresult); 

e non c'è possibile impostare la massimo o in alternativa è possibile eseguire il cast su un numero intero.

double number1 =1.0; 
double number2 = 10.4; 
int result = (int) (number1/number2); 
textView1.setText(String.valueOf(result)); 

la differenza tra loro è che il pugno potrà arrotondare il numero al numero intero più vicino e sarà un'approssimazione più accurata, durante la trasmissione di un intero porterà ad avere casi in cui si inserirà il risultato beeing 3.9 come 3 e questa è una grande differenza. Quindi mi consiglia di utilizzare il NumberFormat

+0

che cosa è val? .. – Matt9Atkins

+0

Ho appena modificato in modo da vedere qual è il val :) – Raykud

0
Double result = number1/number2;//number1 and number2 are double 
textView1.setText(""+result); 

Usare queste due linee per impostare il valore di TextView

0

modo più semplice text.setText(a+"")

Problemi correlati