格式化双精度到2位小数不起作用

Loo*_*oii 2 java double rounding

我想围绕这个双倍:

3.499999999999999
Run Code Online (Sandbox Code Playgroud)

至:

3.50
Run Code Online (Sandbox Code Playgroud)

我已经使用了这两种方法:

DecimalFormat df = new DecimalFormat("0.00");
        double result = Double.valueOf(df.format(input));
        System.out.println(answer);
Run Code Online (Sandbox Code Playgroud)

public double round(double input)
    {
        int decimalPlace = 2;
        BigDecimal bd = new BigDecimal(input);
        bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);

        return (bd.doubleValue());
    }
Run Code Online (Sandbox Code Playgroud)

但它继续印刷:

3.5
Run Code Online (Sandbox Code Playgroud)

有人有解决方案吗?因为我真的认为这应该有效.谢谢你的帮助.

Jon*_*ght 14

你的第一个解决方案非常非常接近.这样做:

    DecimalFormat df = new DecimalFormat("0.00");
    System.out.println(df.format(input));
Run Code Online (Sandbox Code Playgroud)

你的版本不起作用的原因是你正在使用inputdouble,将其格式化为String2dp,然后将其转换回a double. System.out.println然后按double原样打印,没有特殊的小数位规则.