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.

Другие вопросы по тегам