3

只想在小数点后显示两位数,我已经尝试过,但我仍然在小数点后得到很多数字

itemamount = Double.parseDouble(text_cost_code.getText().toString());
txt_total.setText(new DecimalFormat("##.##").format(itemamount));

edit_qty_code.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before,
        int count) {
// TODO Auto-generated method stub
if (!edit_qty_code.getText().toString().equals("")
|| !edit_qty_code.getText().toString().equals("")) {
itemquantity = Double.parseDouble(edit_qty_code.getText().toString());
itemamount = Double.parseDouble(text_cost_code.getText().toString());
txt_total.setText(new DecimalFormat("##.##").format (itemquantity * itemamount));
} else { txt_total.setText("0.00");}}
4

4 回答 4

3

我不确定您要在代码中的哪个位置执行此操作,但是

String.format("%.2f", value);

应该管用。

于 2013-02-02T06:02:55.477 回答
2

Rakesh 使用此链接:

只显示小数点后两位

  i=348842.
  double i2=i/60000;
  DecimalFormat dtime = new DecimalFormat("#.##"); 
  i2= Double.valueOf(dtime.format(time));
  v.setText(String.valueOf(i2));
于 2013-02-02T06:50:17.663 回答
0

试试这个,它可能对你有帮助。

float localresult =Float.parseFloat(itemquantity*itemamount);
BigDecimal bd = new BigDecimal(Double.toString(localresult));
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
bd.doubleValue();

然后将其设置为 textview , textview.setText(""+bd.doubleValue();)

于 2013-02-02T06:37:55.660 回答
0

好吧,如果十进制数的值是动态的,如果不是,那么这就是解决方案。(此解决方案适用于未知动态值或已知值)

 try {
        Double rounded= new BigDecimal(Double.parseDouble(getdecimalvalue())).setScale(2, RoundingMode.HALF_UP).doubleValue();
        textviewid.setText (String.valueOf(rounded) );

    }
    catch (Exception e){
        textviewid.setText (getdecimalvalue());
    }

对于最多 2 个小数,我将 setScale 第一个参数设为 2。假设 getdecimalvalue() 返回一个字符串。

对于动态假设,如果值为“12.5”,那么这将引发异常并在 catch 中直接显示该值,因为该值仅在点后最多 1 个小数位。

于 2019-09-25T23:15:11.680 回答