3

10 進数の後に 2 桁だけを表示したいのですが、試してみましたが、それでも10 進数の後に多くの桁が表示されます:

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はこのリンクを使用します:

小数点以下2桁のみ表示

  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

10進数の値が動的である場合、そうでない場合は、ここに解決策があります。(この解決策は、未知の動的値または既知の値の両方を対象としています)

 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 に答える