Java: выходные данные с переменной десятичной длиной
Пусть a будет любым числом с плавающей запятой:
float a = 13.1234567;
тогда я получаю десятичную длину от стандартного ввода:
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int decLen = sc.nextInt();
Как напечатать 'a' с десятичными знаками 'decLen' после точки? Мне нужно распечатать для
decLen = 3:
13.123
decLen = 6:
13.123456
decLen = 0:
13
Есть ли в библиотеках Java какой-либо метод форматирования, способный решать такие задачи?
1 ответ
Немного взломать, но это будет работать:
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());
};
печатает:
decLen = 3
decLen = 6
decLen = 0
Преобразование типа float или double в строку предотвратит ошибки округления при создании BigDecimal.