如何将十进制数格式化为2或3位数?

时间:2014-06-14 05:52:04

标签: java android eclipse decimal rounding

我正在用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位小数。

5 个答案:

答案 0 :(得分:2)

尝试

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

小数点后3位,

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

答案 1 :(得分:1)

对于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));

请参阅How to format Decimal Number in Java

了解详情

答案 2 :(得分:0)

您可以使用

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

另一种方式

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

答案 3 :(得分:0)

您可以使用NumberFormatter之类的

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

然后将其格式化为

formatter.format(36.55468865)

这会将输出36.555四舍五入55468865555

答案 4 :(得分:0)

(double)Math.round(value * 100000)/ 100000 ..由零个数表示的精度数。

double d = 12345.2145;

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

根据所需的精度更改setScale方法中的第一个参数。