编程语言
首页 > 编程语言> > java-格式化双精度到2位小数不起作用

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

作者:互联网

我想四舍五入:

3.499999999999999

至:

3.50

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

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

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

        return (bd.doubleValue());
    }

但它一直在打印:

3.5

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

解决方法:

您的第一个解决方案确实非常接近.只是这样做:

    DecimalFormat df = new DecimalFormat("0.00");
    System.out.println(df.format(input));

您的版本不起作用的原因是,您将输入加倍,将其格式化为2dp的字符串,然后将其转换回双倍.然后,System.out.println将像以往一样打印双精度字符,没有特殊的小数位规则.

标签:java,rounding,double
来源: https://codeday.me/bug/20191013/1906324.html