Pour quelle fonction puis-je utiliser dans Android) pour afficher le nombre dans différents formats.
Par exemple, si je saisis 1000, il devrait s’afficher comme ceci 1000. Si j'entre 10000, il devrait afficher comme ceci 10.000. Si j'entre 1000000, alors il devrait afficher comme ceci 1.000.000.
Guidez-moi s'il-vous-plaît.
Vous pouvez utiliser DecimalFormat
et simplement formater le nombre
DecimalFormat formatter = new DecimalFormat("#,###,###");
String yourFormattedString = formatter.format(100000);
Le résultat sera
1,000,000
Pour 100000010,000
Pour 100001,000
Pour 1000Mise à jour 12/02/2019
Cette String.format("%,d", number)
constituerait une meilleure solution (moins codée en dur) comme indiqué dans les commentaires ci-dessous par @DreaminginCode. J'ai donc pensé l'ajouter ici comme alternative.
essayez celui-ci espère que cela aidera.
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(1000));
private String getFormatedAmount(int amount){
return NumberFormat.getNumberInstance(Locale.US).format(amount);
}
int[] numbersToFormat = new int[]
{ 1, 10, 100, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
for (int number : numbersToFormat) {
System.out.println(
NumberFormat.getNumberInstance(Locale.getDefault()).format(number));
}
SORTIE
1
10
100
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
Ajoutez un écouteur de modification de texte comme ci-dessous (Assurez-vous également que le type de saisie sélectionné pour Edittext est Number):
etTest.addTextChangedListener(new TextWatcher() {
boolean isManualChange = false;
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (isManualChange) {
isManualChange = false;
return;
}
try {
String value = s.toString().replace(",", "");
String reverseValue = new StringBuilder(value).reverse()
.toString();
StringBuilder finalValue = new StringBuilder();
for (int i = 1; i <= reverseValue.length(); i++) {
char val = reverseValue.charAt(i - 1);
finalValue.append(val);
if (i % 3 == 0 && i != reverseValue.length() && i > 0) {
finalValue.append(",");
}
}
isManualChange = true;
etTest.setText(finalValue.reverse());
etTest.setSelection(finalValue.length());
} catch (Exception e) {
// Do nothing since not a number
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
Ajouter cette fonction dans la classe commune
public static String getFormatedNumber(String number){
if(!number.isEmpty()) {
double val = Double.parseDouble(number);
return NumberFormat.getNumberInstance(Locale.US).format(val);
}else{
return "0";
}
}
Et utilisez cette fonction partout comme ceci:
String newNumber = Utils.getFormatedNumber("10000000");
Vous pouvez utiliser Numberformat
public static double getNumberByString(String s) throws ParseException {
return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue();
}
public static String formatNumber(int number){
return NumberFormat.getNumberInstance(Locale.getDefault()).format(number);
}
public static String formatNumber(String number){
return NumberFormat.getNumberInstance(Locale.getDefault()).format(Integer.parseInt(number));
}