我怎样才能格式化一个string数字在Android编辑字段中有逗号

我可以在android中使用什么函数来将数字显示为不同的格式。

例如:如果我input1000,那么它应该像这样显示1000。 如果我input10000,那么它应该显示像这样的10,000。 如果我input100000,那么它应该显示像这样的1,000,000。

请指导我

您应该使用DecimalFormat并只格式化数字

 DecimalFormat formatter = new DecimalFormat("#,###,###"); String yourFormattedString = formatter.format(100000); 

结果将是

  • 1,000,000为1000000
  • 10,000为10000
  • 1,000 1000

ECT

试试这个希望它会有所帮助。

  System.out.println(NumberFormat.getNumberInstance(Locale.US).format(1000)); 
 private String getFormatedAmount(int amount){ return NumberFormat.getNumberInstance(Locale.US).format(amount); } 

添加一个文本更改侦听器如下(同时确保为Edittextselect的inputtypes是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 } }); 
 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)); } 

OUTPUT

 1 10 100 10,000 100,000 1,000,000 10,000,000 100,000,000 1,000,000,000 

您可以使用Numberformat

 public static double getNumberByString(String s) throws ParseException { return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue(); }