簡體   English   中英

如何將十進制數字格式化為2或3位數字?

[英]How to format a decimal number to 2 or 3 digits?

我正在用Eclipse寫一個轉換器,我的結果是9或10個十進制數字,我想將其設置為2或3。這是我的代碼的一部分:

double gr = 0;
if (edtGr.getText().toString().length() > 0) {
    gr = Float.parseFloat(edtGr.getText().toString());
}
if (edtNgr.getText().toString().length() > 0) {
    gr = (Double.parseDouble(edtNgr.getText().toString())) / 1000000000;
}

edtNgr.setText("" + (gr * 1000000000));
edtGr.setText("" + gr);

這段代碼將克轉換為毫微克,我想要2或3個十進制數字的結果。

嘗試

String.format("%.2f", gr * 1000000000);

對於小數點后三位,

String.format("%.3f", gr * 1000000000);

對於2個小數位,將您的代碼更改為

edtNgr.setText(""+ ((String.format("%.2f", (gr * 1000000000)))));
edtGr.setText("" + ((String.format("%.2f", gr))));

還有3個小數點

  edtNgr.setText("" + ((String.format("%.3f", (gr * 1000000000)))));
  edtGr.setText("" + ((String.format("%.3f", gr))));

您也可以使用DecimalFormat 一種(使用3分)使用它的方法:

 DecimalFormat df = new DecimalFormat();
 df.setMaximumFractionDigits(3);
 edtNgr.setText("" + df.format(gr * 1000000000));
 edtGr.setText("" +df.format(gr));

請參見如何在Java中格式化小數

您可以使用

double roundOff = Math.round(yourDouble * 1000.0) / 1000.0;

其他方式

BigDecimal doubleVal = new BigDecimal("123.13698");
BigDecimal roundOff = doubleVal.setScale(2, BigDecimal.ROUND_HALF_EVEN);

您可以像這樣使用NumberFormatter

NumberFormat formatter = NumberFormat.getInstance();
formatter.setMaximumFractionDigits(3);

然后像這樣格式化

formatter.format(36.55468865)

這會給輸出36.555四舍五入55468865555

(double)Math.round(value * 100000)/ 100000 ..精度數由零個數表示。

要么

雙倍d = 12345.2145;

BigDecimal bd = new BigDecimal(d).setScale(3,RoundingMode.HALF_EVEN); d = bd.doubleValue();

根據所需的精度更改setScale方法中的第一個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM