Мне нужно округлить десятичный разряд числа до n-числа

Мне нужно разделить a на b и округлить это число до n десятичных знаков. пример: a = 2 b = 52 n = 5, решение = 0,03846. Я могу использовать только целые!!

Я работаю с десятичным форматом, но не знаю, как сделать формат настраиваемым.

DecimalFormat nstevilo = new DecimalFormat("#.###");//I need to change ### to a n-number.
    if (x<y) {
    double a = x/y;
    System.out.print(nstevilo.format(a));
    }

Это выводит только #.### из-за формата, который мне нужен, чтобы сделать его #.######- n раз десятичным числом.

Я видел пост, это не одно и то же.

Libraa 13.06.2019 08:52

в чем проблема? построить строку формата?

Sharon Ben Asher 13.06.2019 08:55

попробуйте new DecimalFormat("#."+ "#".repeat(n)) (Ява 9)

Sharon Ben Asher 13.06.2019 08:56

"строка по инструкции"? что это такое? вы уже используете строку в качестве входных данных для средства форматирования

Sharon Ben Asher 13.06.2019 09:03

@SharonBenAsher я получаю сообщение об ошибке «Метод повтора (строка) не определен для строки типа.

Libraa 13.06.2019 09:20

Я нашел решение, спасибо за помощь

Libraa 13.06.2019 09:26

Здравствуйте Весы. Пожалуйста, не редактируйте свой заголовок и добавьте к нему РЕШЕНО. Вместо этого либо примите ответ, который помог вам больше всего, поставив галочку рядом с этим ответом. Или добавьте ответ на свой вопрос.

TT. 13.06.2019 10:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
77
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Пытаться:

private static DecimalFormat df = new DecimalFormat("0.00000");

public static void main(String[] args)
{
        double d = 2 / (double) 52;
        System.out.println(df.format(d));

}

Кроме того, если число десятичных разрядов является динамическим, вы можете использовать:

private static DecimalFormat df = new DecimalFormat();

public static void main(String[] args)
{
            df.setMaximumFractionDigits(5);
            double d = 2 / (double) 52;
            System.out.println(df.format(d));
}

Большое спасибо, второй вариант работает отлично

Libraa 13.06.2019 09:25

Вы можете попробовать так:

int d = x / y; 
for (int i = 0; i <= n; i++) { 
            System.out.print(d); 
            x = x - (y * d); 
            if (x == 0) 
                break; 
            x = x * 10; 
            d = x / y; 
            if (i == 0) 
                System.out.print("."); 
        } 

Подробности здесь

P.S: обязательно обрабатывайте отрицательные входные данные

Не работает выходы 0.0.0.2.3 и т.д.

Libraa 13.06.2019 08:56

@Libraa, я обновил, пожалуйста, проверьте это.

user404 13.06.2019 08:56

Вы можете использовать setMaximumFractionDigits(int), чтобы установить это

Пример

DecimalFormat df = new DecimalFormat();
double d = 13/7.0;
System.out.println(d); // 1.8571428571428572
System.out.println(df.format(d)); //1.857
df.setMaximunFractionDigits(4);
System.out.println(df.format(d)); //1.8571


Пробовал, в итоге всегда выводит одно и то же количество цифр, даже если я меняю 4 на 10

Libraa 13.06.2019 09:04

Это работает на моем конце. Можете ли вы вставить свой тестовый код, где вывод такой же?

Yogesh Patil 13.06.2019 09:16

Все в порядке, я понял это, извините

Libraa 13.06.2019 09:25

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