6

我正在从事一项任务,我在处理下面提到的负面情况时感到震惊

如果值小于 1,那么我想格式化(添加)4 个小数点。

例如,如果值为 0.4567,那么我需要 0.4567

否则,如果值大于 1 格式,只有 2 位数字。

例如,如果值为 444.9,那么我需要 444.90

上面提到的一切都工作正常,但在以下情况下受到打击

也就是说,如果该值小于 1 并且以零结尾 (0.1000 , 0.6000) ,则打印 0.2000 是没有意义的,所以在这种情况下,我希望输出仅为 0.20

这是我下面的程序

package com;
import java.text.DecimalFormat;
public class Test {
    public static void main(String args[]) {
        try {
            String result = "";
            Test test = new Test();
            double value = 444.9;
            if (value < 1) {
                result = test.numberFormat(value, 4);
            } else {
                result = test.numberFormat(value, 2);
            }
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public String numberFormat(double d, int decimals) {
        if (2 == decimals)
            return new DecimalFormat("#,###,###,##0.00").format(d);
        else if (0 == decimals)
            return new DecimalFormat("#,###,###,##0").format(d);
        else if (3 == decimals)
            return new DecimalFormat("#,###,###,##0.000").format(d);
        else if (4 == decimals)
            return new DecimalFormat("#,###,###,##0.0000").format(d);
        return String.valueOf(d);
    }

}
4

2 回答 2

6

如果您想忽略小数点后第 3 位和第 4 位的 0,请使用 #

new DecimalFormat("#,###,###,##0.00##").format(d)
于 2013-06-25T12:01:20.407 回答
0

只需创建一个包含四位数字的字符串并检查尾随零。如果有两个或更少的零,请将它们删除。否则,保持原样。

result = test.numberFormat(value, 4);
if (result.endsWith("00")) {
  result=result.substring(0, result.length()-2);
} else if (result.endsWith("0")) {
  result=result.substring(0, result.length()-1);
}

它可能不是最佳的,但很容易阅读和维护。

于 2013-06-25T12:01:33.157 回答