如何将百分比变量格式化为2位小数?

Vis*_*oon 13 java decimal number-formatting

该程序基本上使用文本文件,读取数据和执行功能:

while(s.hasNext()){
    name= s.next();

    mark= s.nextDouble();

    double percent= (mark / tm )*100  ;

    System.out.println("Student Name      : " +name );

    System.out.println("Percentage In Exam: " +percent+"%"); 

    System.out.println(" ");
}
Run Code Online (Sandbox Code Playgroud)

我想将百分比值格式化为2位小数,但因为它在while循环中,所以我不能使用printf.

Mur*_*nik 13

Elliot的答案当然是正确的,但为了完整起见,值得注意的是,如果您不想立即打印该值,而是将String保留用于其他用途,则可以使用DecimalFormat该类:

DecimalFormat df = new DecimalFormat("##.##%");
double percent = (mark / tm);
String formattedPercent = df.format(percent);
Run Code Online (Sandbox Code Playgroud)

  • 这对国际化不太友好,因为在某些语言中,您需要在数字和百分号之间有一个不间断的空格。NumberFormat 可以开箱即用地处理这个问题,因此 Joe 的答案在这方面更好:/sf/answers/3918495661/ (2认同)

Ell*_*sch 10

您可以使用格式化输出,如,

System.out.printf("Percentage In Exam: %.2f%%%n", percent);
Run Code Online (Sandbox Code Playgroud)

格式化语法描述精度

精确

对于一般参数类型,precision是要写入输出的最大字符数.

对于浮点转换'e','E'和'f',精度是小数分隔符后面的位数.如果转换为"g"或"G",则精度是舍入后得到的幅度中的总位数.如果转换为'a'或'A',则不得指定精度.

双百分比%%变为文字百分比,并且%n是换行符.


Joe*_*ore 8

NumberFormat percentageFormat = NumberFormat.getPercentInstance();
percentageFormat.setMinimumFractionDigits(2);
Run Code Online (Sandbox Code Playgroud)

  • 要实际打印有用的内容,您需要使用第三行代码将百分比打印为字符串:percentageFormat.format(yourNum) (2认同)