十进制格式不起作用

时间:2013-11-16 19:07:58

标签: java decimal number-formatting

我希望能够确保一个数字只有两个小数位。

输入的E.G区域= 256.12345因此区域为256.12。

这就是我所拥有的:

DecimalFormat df = new DecimalFormat( "#,###,###,##0.00" );
double area = new Double(area.format(area)).doubleValue();
area = (double)(r*r);

2 个答案:

答案 0 :(得分:0)

您实际上并未使用实例df

更改您的代码以使用它而不是在area上调用方法(这将无效,因为基元没有方法):

double area = new Double(df.format(area)).doubleValue();

然而,精确度的形式更多是出于打印目的而不是存储目的(Double会将其存储在双浮点的IEEE浮点标准中,这可能会导致浮点值不精确。)

要解决这个问题,请改用BigDecimal,精度为2:

BigDecimal decimal = new BigDecimal(area);
decimal.setScale(2);
System.out.println(decimal); // will print area to two decimal places

答案 1 :(得分:0)

这就是你这样做的方式。

//formatting numbers upto 2 decimal places in Java
        DecimalFormat df = new DecimalFormat("#,###,##0.00");
        System.out.println(df.format(364565.14));
        System.out.println(df.format(364565.1454));

        //formatting numbers upto 3 decimal places in Java
        df = new DecimalFormat("#,###,##0.000");
        System.out.println(df.format(364565.14));
        System.out.println(df.format(364565.1454));
    }

}

Output:
364,565.14
364,565.15
364,565.140
364,565.145