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);