我试图屏蔽价格值,使其始终为0.00
格式。这是我的代码
float temp = 0;
DecimalFormat mDecimalFormat = new DecimalFormat("###.00");
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString()!=null)
{
mMasEditText.removeTextChangedListener(this);
temp = Float.parseFloat(s.toString());
mMasEditText.setText(""+mDecimalFormat.format(addNumber(temp)));
mMasEditText.setSelection(start+1);
mMasEditText.addTextChangedListener(this);
}
}
public float addNumber(float numTemp){
float result=0.00f;
result = numTemp + result;
return result;
}
但是当我按下十进制时,我希望光标再向前迈一步。但我无法获得点回调。此外,当我按下后退按钮,删除数字时,我得到一个索引超出约束的异常。谁能告诉我如何在onTextChanged监听器之前获得后退按钮和点按钮回调?
答案 0 :(得分:0)
使用String.format
String.format("$%.2f", result);
或
Strint text = String.format("$%.2f", addNumber(temp));
mMasEditText.setText(text)
答案 1 :(得分:0)
格式化货币和价格的推荐方法:
Locale loc = Locale.getDefault();
NumberFormat nf = NumberFormat.getCurrencyInstance(loc);
nf.setCurrency(Currency.getInstance(loc));
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
System.out.println(nf.format(23.5634));
System.out.println(nf.format(0.5));