2

我试图掩盖价格值,使其始终采用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 监听器之前获取后退按钮和点按钮回调?

4

2 回答 2

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));
于 2013-05-21T17:03:31.587 回答
0

利用String.format

  String.format("$%.2f", result);

或者

   Strint text = String.format("$%.2f", addNumber(temp));
   mMasEditText.setText(text)
于 2013-05-21T16:40:06.533 回答