Мне нужно разделить 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 раз десятичным числом.
в чем проблема? построить строку формата?
попробуйте new DecimalFormat("#."+ "#".repeat(n))
(Ява 9)
"строка по инструкции"? что это такое? вы уже используете строку в качестве входных данных для средства форматирования
@SharonBenAsher я получаю сообщение об ошибке «Метод повтора (строка) не определен для строки типа.
Я нашел решение, спасибо за помощь
Здравствуйте Весы. Пожалуйста, не редактируйте свой заголовок и добавьте к нему РЕШЕНО. Вместо этого либо примите ответ, который помог вам больше всего, поставив галочку рядом с этим ответом. Или добавьте ответ на свой вопрос.
Пытаться:
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));
}
Большое спасибо, второй вариант работает отлично
Вы можете попробовать так:
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, я обновил, пожалуйста, проверьте это.
Вы можете использовать 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
Это работает на моем конце. Можете ли вы вставить свой тестовый код, где вывод такой же?
Все в порядке, я понял это, извините
Я видел пост, это не одно и то же.