【问题标题】:How to format a decimal number to 2 or 3 digits?如何将十进制数格式化为 2 位或 3 位数字?
【发布时间】:2014-06-14 05:52:04
【问题描述】:

我正在用 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 位十进制数字。

【问题讨论】:

标签: java android eclipse decimal rounding


【解决方案1】:

试试

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

保留 3 位小数,

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

【讨论】:

  • tnx.but我是初学者,我不明白如何使用代码来编写..你能解释一下吗??
  • 阅读@Giru Bhai 的回答。
【解决方案2】:

对于 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查看更多信息

【讨论】:

  • 哇!!很好的答案.. 像我这样的初学者的最佳答案。非常感谢。
  • @user3739774 乐于助人。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受,这样也可能对其他人有所帮助。
【解决方案3】:

你可以使用

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

另一种方式

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

【讨论】:

    【解决方案4】:

    你可以用NumberFormatter点赞

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

    然后像这样格式化

    formatter.format(36.55468865)
    

    这将使输出 36.55555468865 舍入为 555

    【讨论】:

      【解决方案5】:

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

      或者

      双 d = 12345.2145;

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多