Java: double: how to ALWAYS show two decimal digits

后端 未结 6 1966
悲&欢浪女
悲&欢浪女 2021-02-03 23:23

I use double values in my project and I would like to always show the first two decimal digits, even if them are zeros. I use this function for rounding and if the value I print

相关标签:
6条回答
  • 2021-02-03 23:40

    Use the java.text.NumberFormat for this:

    NumberFormat nf= NumberFormat.getInstance();
    nf.setMaximumFractionDigits(2);
    nf.setMinimumFractionDigits(2);
    nf.setRoundingMode(RoundingMode.HALF_UP);
    
    System.out.print(nf.format(decimalNumber));
    
    0 讨论(0)
  • 2021-02-03 23:42
    java.text.DecimalFormat df = new java.text.DecimalFormat("###,###.##");
    df.setMaximumFractionDigits(2); 
    df.setMinimumFractionDigits(2); 
    
    0 讨论(0)
  • 2021-02-03 23:44

    You can use something like this:

     double d = 1.234567;
     DecimalFormat df = new DecimalFormat("#.00");
     System.out.print(df.format(d));
    

    Edited to actually answer the question because I needed the real answer and this came up on google and someone marked it as the answer despite the fact that this wasn't going to work when the decimals were 0.

    0 讨论(0)
  • 2021-02-03 23:45

    DecimalFormat is the easiest option to use:

    double roundTwoDecimals(double d) {
            DecimalFormat twoDecimals = new DecimalFormat("#.##");
            return Double.valueOf(twoDecimals.format(d));
    }
    

    Hope this solves your issue...

    0 讨论(0)
  • 2021-02-03 23:48

    You can use something like this:

    If you want to retain 0 also in the answer: then use (0.00) in the format String

    double d = 2.46327;
    DecimalFormat df = new DecimalFormat("0.00");
    System.out.print(df.format(d));
    

    The output: 2.46

    double d = 0.0001;
    DecimalFormat df = new DecimalFormat("0.00");
    System.out.print(df.format(d));
    

    The output: 0.00

    However, if you use DecimalFormat df = new DecimalFormat("0.##");

    double d = 2.46327;
    DecimalFormat df = new DecimalFormat("0.##");
    System.out.print(df.format(d));
    

    The output: 2.46

    double d = 0.0001;
    DecimalFormat df = new DecimalFormat("0.##");
    System.out.print(df.format(d));
    

    The output: 0

    0 讨论(0)
  • 2021-02-03 23:50

    You can simply do this:

    double d = yourDoubleValue;  
    String formattedData = String.format("%.02f", d);
    
    0 讨论(0)
提交回复
热议问题