有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在用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) 个答案

  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. # 2 楼答案

    (双重)数学。四舍五入(价值*100000)/100000。。由零的数量表示的精度的数量

    或者

    双d=12345.2145

    BigDecimal bd=新的BigDecimal(d)。设置刻度(3,圆形模式。半_偶数); d=bd.doubleValue()

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

  3. # 3 楼答案

    试试看

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

    小数点后3位

    String.format("%.3f", gr * 1000000000);
    
  4. # 4 楼答案

    你可以用

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

    另一种方式

    BigDecimal doubleVal = new BigDecimal("123.13698");
    BigDecimal roundOff = doubleVal.setScale(2, BigDecimal.ROUND_HALF_EVEN);
    
  5. # 5 楼答案

    你可以像这样使用NumberFormatter

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

    然后将其格式化为

    formatter.format(36.55468865)
    

    这将使输出36.555四舍五入55468865555