代码:
String s = "12345.67890";
float f= Float.parseFloat(s);
DecimalFormat decimalFormat=new DecimalFormat(".00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
String p=decimalFormat.format(f);//format 返回的是字符串
p值 : 12345.68
EditText输入价格,保留两位小数,最大价格小于10万,代码:
方法一
/**
* 设置限制小数点最多两位,最大5位数
*/
public void setPricePoint(final EditText editText) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count){
Editable edt = editText.getText();
String temp = edt.toString();
int posDot = temp.indexOf(".");//返回指定字符在此字符串中第一次出现处的索引
if (posDot <= 0) {//不包含小数点
if (temp.length() <= 5) {
return;//小于五位数直接返回
} else {
edt.delete(5, 6);//大于五位数就删掉第六位(只会保留五位)
return;
}
}else if (posDot>5){
edt.delete(start,start-before+count);//小数点前,大于5位数整数,删除后面添加的数值
}
if (temp.length() - posDot - 1 > 2)//如果包含小数点
{
edt.delete(posDot + 3, posDot + 4);//删除小数点后的第三位
}
if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > 2) {
s = s.toString().subSequence(0, s.toString().indexOf(".") + 3);
editText.setText(s);
editText.setSelection(s.length());
}
}
if (s.toString().trim().substring(0).equals(".")) {
s = "0" + s;
editText.setText(s);
editText.setSelection(2);
}
if (s.toString().startsWith("0") && s.toString().trim().length() > 1) {
if (!s.toString().substring(1, 2).equals(".")) {
editText.setText(s.subSequence(0, 1));
editText.setSelection(1);
return;
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
// editText.addTextChangedListener(new TextWatcher() {
// @Override
// public void onTextChanged(CharSequence s, int start, int before, int count){
// Editable edt = editText.getText();
// String temp = edt.toString();
// int posDot = temp.indexOf(".");//返回指定字符在此字符串中第一次出现处的索引
// if (posDot <= 0) {//不包含小数点
// if (temp.length() <= 5) {
// return;//小于五位数直接返回
// } else {
// edt.delete(5, 6);//大于五位数就删掉第六位(只会保留五位)
// return;
// }
// }else {
// Log.e("feifei",editText.getText().toString()+"e");
//
// }
// if (temp.length() - posDot - 1 > 2)//如果包含小数点
// {
// if (temp.length() - posDot - 1 < 5){
// edt.delete(posDot + 3, posDot + 4);//删除小数点后的第三位
//
// }else {
// edt.delete(start,start-before+count);
edt.delete(posDot + 3, posDot + 4);//删除小数点后的第三位
//
// }
// Log.e("feifei",editText.getText().toString()+"aaaaa");
//
// }else {
// Log.e("feifei",editText.getText().toString()+"ee");
//
// }
//
// if (s.toString().contains(".")) {
// if (s.length() - 1 - s.toString().indexOf(".") > 2) {
// if (s.length() - 1 - s.toString().indexOf(".")<=5){
// s = s.toString().subSequence(0, s.toString().indexOf(".") + 3);
// editText.setText(s);
// editText.setSelection(s.length());
// }else {
s = s.toString().subSequence(0, s.toString().indexOf(".") + 3);
// editText.setText("");
editText.setSelection(s.length());
// }
// Log.e("feifei",editText.getText().toString()+"aaa");
//
//
// }
// }
// if (s.toString().trim().substring(0).equals(".")) {
// s = "0" + s;
// editText.setText(s);
// editText.setSelection(2);
// Log.e("feifei",editText.getText().toString()+"aa");
// }else {
// Log.e("feifei",editText.getText().toString()+"eee");
//
// }
//
// if (s.toString().startsWith("0") && s.toString().trim().length() > 1) {
// if (!s.toString().substring(1, 2).equals(".")) {
// editText.setText(s.subSequence(0, 1));
// editText.setSelection(1);
// Log.e("feifei",editText.getText().toString()+"a");
// return;
// }else {
// Log.e("feifei",editText.getText().toString()+"eeeeee");
//
// }
// }
// }
//
// @Override
// public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// }
//
// @Override
// public void afterTextChanged(Editable s) {
// }
//
// });
}
方法二(正则语句):
private boolean isRight(CharSequence charSequence){
String reg = "^\\d{1,5}||\\d{1,5}+\\.||\\d{1,5}+\\.+\\d{1,2}$";//非零开头的最多带两位小数的数字
// String reg = "^[0-9]+(.[0-9]{2})?$";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(charSequence);
boolean b = matcher.matches();
return b;
}
private void setAddTextChangeWithEditText(final EditText editText){
final EditText old_EditText = new EditText(this);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int i, int i1, int i2) {
if (s.length()==0){
return;
}else {
old_EditText.setText(s);
}
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.length()<=0){
return;
}
boolean b = isRight(charSequence) ;
if (b==true){
//合格
}else {
if (old_EditText.getText().toString().length() > 0 ){
editText.setText(old_EditText.getText());
editText.setSelection(i+i1);
}else {
editText.setText("");
}
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}