Для какой функции я могу использовать в Android для отображения числа в различных форматах.
Например: Если я ввожу 1000, то он должен показать как это 1000. Если я ввести 10000, то он должен показать, как это 10,000. Если я введите 1000000, то он должен показать такой 1,000,000.
Пожалуйста, руководство меня.
Вы могли бы использовать DecimalFormat и просто формат числа
DecimalFormat formatter = new DecimalFormat("#,###,###");
String yourFormattedString = formatter.format(100000);
Результат будет
1,000,000
за 100000010,000
за 100001,000
за 1000Обновление 12/02/2019
Эта Строка.формат(" по%,д-то", количество) было бы лучшим решением(менее жестко), как указано в комментарии ниже по @DreaminginCode поэтому я думал, я хотел бы добавить его в качестве альтернативы
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));
}
Выход
1
10
100
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
Добавить слушателя изменения текста, как показано ниже (также убедитесь, что тип входного сигнала, который выбран для EditText номер) :
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
}
});
Вы можете использовать Numberformat
public static double getNumberByString(String s) throws ParseException {
return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue();
}
Добавить эту функцию в общий класс
public static String getFormatedNumber(String number){
if(!number.isEmpty()) {
double val = Double.parseDouble(number);
return NumberFormat.getNumberInstance(Locale.US).format(val);
}else{
return "0";
}
}
И использовать эту функцию везде такой:
String newNumber = Utils.getFormatedNumber("10000000");
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));
}