Java保留数据后n位

在做一道算法题时,它的输出要求保留小数点后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);     
}
}

这是我个人的学习心得,如果有什么错误,欢迎留言指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值