Java double类型格式输出

输出的数据若小数点后超过6位,只保留小数点后6位,多余部分采用四舍五入规则进到最低位。小数点后若不足6位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333333,1.0按格式输出为1.0

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    double in = scanner.nextDouble();
    String str_d = String.valueOf(in);
    str_d = str_d.substring(str_d.indexOf(".") + 1);
    int len = str_d.length();
    len = len > 6 ? 6 : len;
    String out = String.format("%."+len+"f", in);
    System.out.println(out);
}

可以使用DecimalFormat的format方法.
分为两种:0和#

0:
比实际数字的位数多,不足的地方用0补上。

new DecimalFormat(“00.00”).format(4.14) //结果:04.14
new DecimalFormat(“0.000”).format(4.14) //结果: 4.140
new DecimalFormat(“00.000”).format(4.14) //结果:04.140
比实际数字的位数少:整数部分不改动,小数部分,四舍五入

new DecimalFormat(“0.000”).format(43.146) //结果:43.146
new DecimalFormat(“00.00”).format(43.146) //结果:43.15
new DecimalFormat(“0.00”).format(43.146) //结果:43.15
#:

比实际数字的位数多,不变。

new DecimalFormat("##.##").format(4.14) //结果:4.14
new DecimalFormat("#.###").format(4.14) //结果: 4.14
new DecimalFormat("##.###").format(4.14) //结果:4.14
比实际数字的位数少:整数部分不改动,小数部分,四舍五入

new DecimalFormat("#.###").format(43.146) //结果:43.146
new DecimalFormat("##.##").format(43.146) //结果:43.15
new DecimalFormat("#.##").format(43.146) //结果:43.15
更多可以参考:https://blog.csdn.net/weixin_42347357/article/details/11459019