使用edittext在android中格式化0.00格式的价格

时间:2013-05-21 16:38:58

标签: java android

我试图屏蔽价格值,使其始终为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监听器之前获得后退按钮和点按钮回调?

2 个答案:

答案 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));