Java Decimals格式化

时间:2012-02-24 13:38:14

标签: java

如何在各种情况下使用Java对格式进行编号:

  1. 如果值为0,则输出将为零。
  2. 如果值为1,则输出为1。
  3. 如果值为1.2,则输出为1.20。
  4. 如果值为1.20,则输出为1.20。
  5. 所以这意味着如果输入值有小数,那么我必须将numberformat应用于两个小数位,否则不需要。

2 个答案:

答案 0 :(得分:3)

对于没有小数的情况和两位小数的情况,一个DecimalFormatter不起作用。

以下是符合所有4个条件的代码:

    DecimalFormat formatter1 = new DecimalFormat("0");
    DecimalFormat formatter2 = new DecimalFormat("0.00");

    double[] input = {0, 1, 1.2, 1.265};
    for (int i = 0; i < input.length; i++) {
        double test = Math.round(input[i]);
        if (Math.abs(test - input[i]) < 1E-6) {
            System.out.println(formatter1.format(input[i]));
        } else {
            System.out.println(formatter2.format(input[i]));
        }
    }

编辑添加:对于jambjo,一个在DecimalFormatter之后操纵字符串的版本。

    DecimalFormat formatter2 = new DecimalFormat("0.00");

    double[] input = {0, 1, 1.2, 1.265};
    for (int i = 0; i < input.length; i++) {
        String result = formatter2.format(input[i]);
        int pos = result.indexOf(".00");
        if (pos >= 0) {
            result = result.substring(0, pos);
        }
        System.out.println(result);
    }

答案 1 :(得分:-2)

http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html。这种格式的一个例子是:

double input = 1.2;
DecimalFormat formatter = new DecimalFormat("0.00");
String result = formatter.format(input);

十进制符号(以及结果字符串中使用的其他符号)将取决于系统区域设置(除非另有设置) - 请参阅http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html#setDecimalFormatSymbols%28java.text.DecimalFormatSymbols