Java:可变十进制长度格式化输出

Java:可变十进制长度格式化输出,java,printf,formatted-text,Java,Printf,Formatted Text,设a为任意浮点数: float a = 13.1234567; 然后我从标准输入中得到一个小数位长度: import java.util.Scanner; Scanner sc = new Scanner(System.in); int decLen = sc.nextInt(); 如何打印点后带“decLen”小数位的“a”? 我需要为你打印 decLen=3: 13.123 decLen=6: 13.123456 decLen=0: 13 Java库中是否有任何能够执行此类任务的格

设a为任意浮点数:

float a = 13.1234567;
然后我从标准输入中得到一个小数位长度:

import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int decLen = sc.nextInt();
如何打印点后带“decLen”小数位的“a”? 我需要为你打印

decLen=3:

13.123
decLen=6:

13.123456
decLen=0:

13

Java库中是否有任何能够执行此类任务的格式化方法?

有点小技巧,但这会起作用:

    double[] doubles = {13.123, 13.123456, 13};
    for (int i = 0; i < doubles.length; i++) {
        BigDecimal bigDecimal = new BigDecimal(String.valueOf(doubles[i]));
        System.out.println("decLen = " + bigDecimal.stripTrailingZeros().scale());
    };

在创建BigDecimal时,将float或double转换为字符串将防止舍入错误。

它不是重复的。这个问题涉及原语的比例,以及将数字格式化为给定比例的另一个问题。这不是回答“如何在点后打印带小数点后‘decLen’的‘a’?”
decLen = 3
decLen = 6
decLen = 0