0

J'ai un nombre qui est dans le format de chaîne et je veux le convertir pour flotter avec deux décimales.convertir une chaîne de nombre avec des virgules pour flotter

le nombre qui est dans le format de chaîne peut être semblable à "1" ou "1,128" (mille cent vingt huit).

Dans un premier temps j'ai essayé

String stringNumber = "1"; //works fine EXPECTED OUTPUT -- 1.00 
String stringNumber = "1,128"// fails because it has a comma. EXPECTED OUTPUT -- 1,128.00 

Float f = Float.parseFloat(stringNumber); 
String s = String.format("%.2f", f); 

avant de faire le Float.parseFloat je peux supprimer les virgules de la chaîne, et au format d'utilisation finale comme indiqué ci-dessous pour obtenir les virgules Retour

format("% ,d", number) 

Je pense que pour une chose simple, je fais beaucoup.

existe-t-il un moyen plus simple d'y parvenir?

Merci d'avance. Rao

EDIT Jusqu'à présent, ce que je suis arrivé. Entrée - "1,128" en utilisant le code suivant convertit en "1,128.0" La seule chose qui me manque est un point décimal supplémentaire. en utilisant le decimalFormat comment ajouter un point décimal supplémentaire une idée les gars?

String qa = "1,128"; 
String nocomma = qa.replace(",", ""); 
Float f = Float.parseFloat(nocomma); 
String s = String.format("%.2f", f); 

DecimalFormat formatter = new DecimalFormat("#,###,###.0#"); 
String yourFormattedString = formatter.format(f); 
return yourFormattedString; 

Répondre

0

1.Utiliser remplacer, utilisez "" pour remplacer ","

Puis parseFloat

String stringNumber = "1,128"; 
String result = null; 
result = stringNumber.replace(",",""); 
Float f = Float.parseFloat(result); 

2.Utiliser StringTokenizer

java.util.StringTokenizer stringNumber = new StringTokenizer("1,128", ","); 
StringBuffer sb = new StringBuffer(); 
while (stringNumber.hasMoreTokens()) { 
    sb.append(stringNumber.nextToken()); 
} 
Float f = Float.parseFloat(sb.toString()); 

Modifier

// edited here ,change to this 
DecimalFormat formatter = new DecimalFormat("#,###,##0.00"); 
String yourFormattedString = formatter.format(f); 
Log.e("DecimalFormat", yourFormattedString); 

SORTIE

1,128.00 
+0

Merci de votre réponse, je sais que je peux le faire, mais si mon entrée est 1128 et la parseFloat que je l'ai fait convertit 1128,00. mais ma sortie désirée est de 1 128,00. Je peux utiliser decimalFormatter 'DecimalFormat formatter = new DecimalFormat ("#, ###, ###. ##")' mais le .00 n'apparaît toujours pas. Je pense que je ne suis pas habitué au formatage décimal. – BRDroid

+0

Si le problème est seulement avec les zéros à la fin, que pourrait-il être utile si vous convertissez 1,128 en chaîne et simplement ajouter 00 à la fin de celui-ci? – Simo

+0

Non c'est possible parce qu'il peut y avoir un point décimal là – BRDroid