L'obtention d'un double avec .00
J'ai un String
valeur; et j'ai besoin de l'avoir toujours avec 2 décimales comme un Double
type; donc, si je suis 500
, j'ai besoin de les convertir à 500.00
étant toujours une valeur double.
Mon problème est que lorsque j'ai quelque chose commexxx.00
ou xxx.x0
, le parseDouble méthode supprime le second 0.
Mon code est quelque chose comme cela
String number = "500.00";
Double numberToSave = (Double.ParseDouble(number));
Et numberToSave
retourne 500.0
Toutes les idées de comment puis-je résoudre ce problème? J'ai besoin de montrer à la deuxième décimale, même si elle est 0
.
Merci.
- Vous êtes à la confusion de l' mise en forme de la valeur de sa valeur réelle.
- 500, 500.0, et 500,00 sont tous le même nombre. Le problème n'est pas avec
Double.ParseDouble
. Vous devriez vous soucier de comment formater correctement le nombre lors de l'affichage de la valeur pour les utilisateurs, pas de le ranger. - Voir ce lik: stackoverflow.com/questions/17236335/...
- double possible de stackoverflow.com/questions/153724/...
Vous devez vous connecter pour publier un commentaire.
Double
n'ont pas de concept de maintenir chiffres insignifiants.Le problème n'est pas la
Double
(oudouble
) la valeur que vous utilisez, comment vous puis de le convertir en retour dans une chaîne. Vous devez utiliser unDecimalFormat
qui spécifie le nombre de décimales.Notez également que vous utilisez actuellement
Double.parseDouble
qui renvoie unedouble
, mais vous êtes en l'assignant à unDouble
variable, qui va de la boîte de la valeur, peut - être inutilement.Exemple de code:
Noter que le code ci-dessus va vous donner deux chiffres après la virgule, même si il y a plus chiffres disponibles.
En outre, si exact de chiffres décimaux est important pour vous, vous pouvez envisager d'utiliser
BigDecimal
au lieu dedouble
. Ceci est particulièrement important si vos valeurs représentent en fait la monnaie. Vous devez comprendre la différence entre un flottant binaire type de point (commedouble
) et un flottant décimal type de point (commeBigDecimal
) et de choisir de façon appropriée entre eux.Il y a toujours
String.format
ainsi,Si vous êtes inquiet au sujet de l'impression de la valeur mise en forme, vous pouvez utiliser
System.out.printf
,Vous devez utiliser le
DecimalFormat
classe.Quelque chose comme cela
DecimalFormat df = new DecimalFormat("#.##");
.Ont un look à la java docs.
Vous voudrez peut-être regarder dans le
DecimalFormat
de la classe, il peut être utilisé pour formater un double comme ceci:Utiliser un
NumberFormat
objet.