在做一道算法题时,它的输出要求保留小数点后6位,C的我知道,但是java的没试过,所以不知道,因此特意去百度查了一下,学习后写下这篇博文。下面开始正文:
1.使用String.format(format, args)方法
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
Integer a=reader.nextInt();
float b=reader.nextFloat();
System.out.println(String.format("%.6f", Math.PI*a));//整数的情况,需要乘以一个小数
System.out.println(String.format("%.6f", b));//浮点数的情况,此时不需要乘以小数
}
2.使用Math.round()方法
System.out.println((float)Math.round(Math.PI*a*1000000)/1000000);//需要保留几位就除以多少位的数
System.out.println((float)Math.round(b*1000000)/1000000);
3.使用NumberFormat
NumberFormat nf=NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(6);//6指保留六位小数
nf.setRoundingMode(RoundingMode.UP);//如果不需要四舍五入可以使用RoundingMode.DOWN
System.out.println(nf.format(Math.PI*a));
System.out.println(nf.format(b));
4.使用DecimalFormat
DecimalFormat dFormat=new DecimalFormat("#.000000");
System.out.println(Double.parseDouble(dFormat.format(Math.PI*a)));
//DecimalFormat的格式化结果是String类型的,想要结果为double需要再次强转
//如果数据只是直接用于显示的可以不用强制转换成double类型
System.out.println(dFormat.format(b));
5.使用System.out.printf(format, args)方法
System.out.printf("%.6f",b);
完整代码:
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Scanner;
public class aa {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
Integer a=reader.nextInt();
float b=reader.nextFloat();
System.out.println("String.format(format, args)方法:");
System.out.println(String.format("%.6f", Math.PI*a));
System.out.println(String.format("%.6f", b));
System.out.println("Math.round方法:");
System.out.println((float)Math.round(Math.PI*a*1000000)/1000000);
System.out.println((float)Math.round(b*1000000)/1000000);
System.out.println("NumberFormat方法");
NumberFormat nf=NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(6);
nf.setRoundingMode(RoundingMode.UP);
System.out.println(nf.format(Math.PI*a));
System.out.println(nf.format(b));
System.out.println("DecimalFormat方法:");
DecimalFormat dFormat=new DecimalFormat("#.000000");
System.out.println(Double.parseDouble(dFormat.format(Math.PI*a)));
System.out.println(dFormat.format(b));
System.out.println("直接使用printf:");
System.out.printf("%.6f",b);
}
}
这是我个人的学习心得,如果有什么错误,欢迎留言指出。