Java:可变十进制长度格式化输出
设a为任意浮点数: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库中是否有任何能够执行此类任务的格
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