7
votes

Format de numéro Android

Dans mon application Vous voulez arrondir un double à 2 chiffres significatifs après un point décimal. J'ai essayé le code ci-dessous.

double val = ....;
val = val*100;
val = (double)((int) val);
val = val /100;


5 commentaires

Pouvez-vous donner un exemple d'entrée / sortie incorrecte?


Lorsque je donne une entrée 0.5, il retourne 0.5. J'ai besoin de 0,50 comme sortie. De plus, lorsque je donne une entrée 2.0, j'ai besoin d'une sortie 2.00.


Le nombre 0.5 est indiscernable de 0,50, votre problème n'est pas le code d'arrondi, mais le code qui affiche le numéro.


Qu'est-ce que Android pour dans le titre? Doit être redirigé?


Non liée à votre problème réel: la deuxième version du code devrait peut-être utiliser val = val * 100 + 0.5 .


6 Réponses :


2
votes

1 commentaires

J'ai aussi essayé le code ci-dessous. Public statique double tour (double non fondé) {bigdecimal bd = nouveau bigdecimal (non fini); Bigdecimal arrondi = bd.setscale (2, bigdecimal.round_half_up); retour arrondi.doudouvalue (); }



0
votes

Comme grammage suggéré que vous puissiez utiliser des bigdecimaux pour cela, ou NumberFormat TOBE SUR LE NOMBRE DE FIGURES VIÉTÉES


0 commentaires

0
votes

Votre code semble fonctionner à moi xxx

éditer: vient de voir votre nouveau commentaire sur votre question. Ceci est un problème de formatage, pas un problème de mathématiques.


0 commentaires

20
votes

Comme le dit Grammin, si vous essayez de représenter de l'argent, utilisez BigDecimal . Cette classe a pris en charge toutes sortes d'arrondies et vous pouvez vous configurer exactement la précision souhaitée.

Mais pour répondre directement à votre question, vous ne pouvez pas définir la précision sur un double, car c'est un point flottant. Ça ne les a une précision. Si vous avez juste besoin de faire cela pour formater la sortie, je vous recommande d'utiliser un NumberFormat . Quelque chose comme ceci: xxx


0 commentaires

6
votes

ou vous pouvez utiliser un java.text.decimalformat : xxx


0 commentaires

0
votes

J'ai pris la décision d'utiliser tout comme INT. De cette façon aucun problème. xxx

après ... xxx


0 commentaires