Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将百分比变量的格式设置为小数点后2位?_Java_Decimal_Number Formatting - Fatal编程技术网

Java 如何将百分比变量的格式设置为小数点后2位?

Java 如何将百分比变量的格式设置为小数点后2位?,java,decimal,number-formatting,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+"%");

该程序主要处理文本文件,读取数据并执行以下功能:

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(" ");
}

我想将百分比值格式化为小数点后2位,但由于它在while循环中,我无法使用printf。

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

System.out.printf("Percentage In Exam: %.2f%%%n", percent);
精度描述为

精度

对于常规参数类型,精度是要写入输出的最大字符数

对于浮点转换“e”、“e”和“f”,精度是十进制分隔符后的位数。如果转换为“g”或“g”,则精度为四舍五入后所得幅值的总位数。如果转换为“a”或“a”,则不得指定精度


双百分比
%%
变成了百分比文字,而
%n
是一个换行符。

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

ِ最简单的方法:

   System.out.println(Math.floor(percent*100)/100);

您可以使用String.format执行此操作

System.out.println(String.format("%s%.2f%s","Percentage In Exam: " ,percent,"%"));

最好通过
NumberFormat.getInstance(Locale)
并使用
setMinimumFractionDigits
方法(可能还有其他方法)获取百分比格式化程序。

以下是您的问题的答案,谢谢您的回答。你能解释一下它是如何工作的,为什么它是解决这个问题的好方法吗?这个方法使用当前的语言环境。在讲法语的加拿大,他们写的百分比像“100,00%”。这可能是您想要的,也可能不是您想要的,是谁在用机器还是人读取您的输出?要真正打印有用的内容,您需要使用第三行代码将百分比打印为字符串:percentageFormat.format(yourNum)
System.out.println(String.format("%s%.2f%s","Percentage In Exam: " ,percent,"%"));
NumberFormat percentageFormat = NumberFormat.getPercentInstance();
percentageFormat.setMinimumFractionDigits(2);