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;
6 Réponses :
Je recommanderais d'utiliser BigDecimal < / a> Si vous essayez de représenter la devise. P>
Ce exemple peut être utile. P>
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 (); }
Comme grammage suggéré que vous puissiez utiliser des bigdecimaux pour cela, ou NumberFormat TOBE SUR LE NOMBRE DE FIGURES VIÉTÉES P>
Votre code semble fonctionner à moi éditer: vient de voir votre nouveau commentaire sur votre question. Ceci est un problème de formatage, pas un problème de mathématiques. P> p>
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 em> 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: p>
J'ai pris la décision d'utiliser tout comme INT. De cette façon aucun problème. après ... p>
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 code>.