小数点后为什么不考虑两个零的双数

问题描述 投票:0回答:1
private static DecimalFormat df = new DecimalFormat("0.00");

    public static void main(String[] args) {
        double input = 300.00;

        System.out.println("double : " + input);

        Double d=Double.valueOf(df.format(input));
       System.out.println("##1::"+d);
       System.out.println("##2 ::"+df.format(input));
       System.out.println("##3 ::"+Double.valueOf(df.format(input)));           
    }
}

产出。

double : 300.0 
##1::300.0 
##2 ::300.00 
##3 ::300.0 

预期的输出。300.00

java asp.net-core math decimal
1个回答
2
投票

你可以使用BigDecimal来实现双数的缩放和四舍五入。试试这个。

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Test {

    public static void main(String[] args) {
        BigDecimal input = BigDecimal.valueOf(300);

        System.out.println("double 2 digit: " + Test.round(input, 2));
        System.out.println("double 5 digit: " + Test.round(input, 5));
    }

    public static BigDecimal round(BigDecimal bd, int scale) {
        return bd.setScale(scale, RoundingMode.HALF_UP);
    }
}

像这样输出。

double 2 digit: 300.00
double 5 digit: 300.00000
© www.soinside.com 2019 - 2024. All rights reserved.