当我们输出一个浮点型变量的时候,会发现输出的小数点会很多,可以通过以下方法保留小数点。
1.System.out.printf("%.nf",num); 其中n保留多少位小数。如n=0就是取整,n=1时就是保留1位小数等。遵循四舍五入
类似与C语言的printf("%.nf",num);来保留小数位。 输出不会自动换行!
代码示例:
public class Test {
public static void main(String[] args) {
double num = 0.64666666;
System.out.printf("%fn",num); //输出0.646667
System.out.printf("%.0fn",num); //输出1
System.out.printf("%.1fn",num); //输出0.6
}
}
2.使用Math工具类中的取整方法。可以用于浮点数取整。只看浮点数的小数位的第一位是何值来判断
Math.round(double num); //四舍五入 返回一个long型数,既不保留小数点,如0.5使用该方法变为1。
Math.ceil(double num); //向上取整 返回一个double型数,保留一位小数且该小数为0。 如0.5使用该方法变为1.0。
Math.floor(double num); //向下取整 返回一个double型数,保留一位小数且该小数为0。如0.5使用该方法变为0.0。
代码示例: num1和num2 输出百分比,
public class Test {
public static void main(String[] args) {
double num1 = 0.51124563;
double num2 = 0.47121412;
double num3 = 666;
System.out.println(Math.round(num1*100)+"%"); //51%
System.out.println(Math.round(num2*100)+"%"); //47%
System.out.println(Math.round(num3)); //666
System.out.println(Math.ceil(num1*100)+"%"); //52.0%
System.out.println(Math.ceil(num2*100)+"%"); //48.0%
System.out.println(Math.ceil(num3)); //666.0
System.out.println(Math.floor(num1*100)+"%"); //51.0%
System.out.println(Math.floor(num2*100)+"%"); //47.0%
System.out.println(Math.floor(num3)); //666.0
}
}
3.使用DecimalFormat类。是四舍五入保留小数点
(1)需要导包import java.text.DecimalFormat;
(2)定义对象时指定格式。
DecimalFormat df = new DecimalFormat("0.00%"); // 其中.后面有多少个0就是保留多少位小数,加上%会将浮点数自动转换成百分比(*100)。如果不保留小数点就不要带上.
(3)调用该类方法 df.format(double num);
代码示例:
import java.text.DecimalFormat;
public class Test {
public static void main(String[] args) {
double num1 = 0.51624563;
DecimalFormat df = new DecimalFormat("0%");
System.out.println(df.format(num1)); // 输出52%
df = new DecimalFormat("0.00");
System.out.println(df.format(num1)); // 输出0.52
}
}



