Is it possible to use String.format for a conditional decimal point?

后端 未结 2 1204
不思量自难忘°
不思量自难忘° 2021-01-11 12:19

In java, is it possible to use String.format to only show a decimal if there is actually a need? For example, if I do this:

String.format(\"%.1f\", amount);         


        
相关标签:
2条回答
  • 2021-01-11 12:31

    This might get you what your looking for; I'm not sure of the requirements or context of your request.

    float f;
    f = 1f
    System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1
    f = 1.555f
    System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1.555
    

    Worked great for what I needed.

    FYI, above, System.out.printf(fmt, x) is like System.out.print(String.format(fmt, x)

    0 讨论(0)
  • 2021-01-11 12:36

    No, you have to use DecimalFormat:

    final DecimalFormat f = new DecimalFormat("0.##");
    System.out.println(f.format(1.3));
    System.out.println(f.format(1.0));
    

    Put as many #s as you'd like; the DecimalFormat will only print as many digits as it thinks are significant, up to the number of #s.

    0 讨论(0)
提交回复
热议问题