14 votes

Comment passer une valeur double à un textview dans Android

Dans Android, je définis le texte d'un textview comme étant la réponse à un calcul qui est un type de données double.

Lorsque la valeur double a une valeur de 5, le textview reçoit la chaîne : 5.0.

Code:

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

Comment puis-je formater le texte du textview pour qu'il affiche la valeur double dans un format cohérent ?

45voto

Arpit Patel Points 1417

Dans Android, attribuez un double à un textView :

Utilisez Double.toString :

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

ou vous pouvez utiliser NumberFormat :

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

Pour forcer une précision de 3 unités :

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

2voto

MAC Points 8956

La meilleure façon est

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

1voto

user1938507 Points 31

Je n'aime pas la réponse acceptée et toutes les autres réponses fournies, car il existe un moyen beaucoup plus facile qui arrondira également la valeur pour vous, par exemple 4,56 sera affiché comme 4,6 lorsque vous souhaitez afficher 1 chiffre après la virgule.

par exemple, si vous voulez afficher seulement 1 chiffre après la virgule :

double val = 1,8765;
doubleTextView.setText(String.format(Locale.US, "%.1f", val));

Si vous voulez simplement afficher la partie entière arrondie

double val = 1,8765;
doubleTextView.setText(String.format(Locale.US, "%.0f", val));

Vous pouvez également définir la Locale sur l'Allemagne, de sorte que 1,08 soit affiché comme 1,08 (comme en Allemagne, l'identifiant décimal est la virgule)

par exemple

double val = 1,8765;
doubleTextView.setText(String.format(Locale.GERMAN, "%.0f", val));

0voto

mussharapp Points 2148

Essayez ceci

 TextView tv = (TextView)findViewById(R.id.button1);
            Double num = (double)4+6;
            if(num%2==0) {
                tv.setText(num.intValue()+""); //si vous voulez supprimer la virgule décimale
            } else {
                tv.setText(num+"");
            }

0voto

Raykud Points 2451

Vous pouvez utiliser NumberFormat et ensuite vous pouvez utiliser votre code normal :

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

et là vous pouvez définir le maximum ou sinon vous pouvez caster en entier.

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

la différence entre eux est que le premier va arrondir le nombre à l'entier le plus proche et sera une approximation plus précise, alors que le cast en entier conduira à des cas où le résultat étant 3.9 sera mis à 3 et c'est une grande différence. C'est pourquoi je recommande d'utiliser le NumberFormat

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X