Как глава говорит, я хочу ограничить количество десятичных, что следует из операции с переменными тип double, этот результат появляется в JTextArea JFrame.
Кодекс, который делает операцию и печатает результат в JTextArea - следующий: (la
, lb
и lc
Вы представляете стороны треугольника, a
Вы вычисляете область и A
Вы JTextArea, где печатается результат).
if (lb+lc>la && la+lc>lb && la+lb>lc){
a=Math.sqrt((la+lb+lc)*(-la+lb+lc)*(la-lb+lc)*(la+lb-lc)/16);
p=la+lb+lc;
A.setText("El triangulo es "+t+".\nEl area es ("+a+").\nEl perimetro es ("+p+").");
Существуй большие способы ограничивать количество десятичных выпяченной (Презентации) одного double
, больше не числа, если, например для double number = 1.4159999999;
ограничивать вывод 2 десятичными. если Вы желаете больше цифр, это вопрос добавления нулей в decimalformat
и Round, cambiar el 2 por por la cantidad deseada en
String.formaty
printfY y en
setScalede
BigDecimal'
Используя DecimalFormat
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(number));
/* Salida : 1.42*/
Используя String. Format
System.out.println(String.format("%.2f", number));
/* Salida : 1.42*/
Если он только желает, по отношению к которому вывод имел этот формат, применился бы numberformat
System.out.printf("Valor: %.2f", number );
/* Salida : 1.42*/
Посредством Math. Round (), где количество нулей - количество десятичных, чтобы граничить
System.out.println((double)Math.round(number * 100d) / 100d);
/* Salida : 1.42*/
Используя класс BigDecimal, используя метод setScale, что получает два параметра, количество десятичных, чтобы граничить и способ округления
BigDecimal bd = new BigDecimal(number);
bd = bd.setScale(2, RoundingMode.HALF_UP);
System.out.println(bd.doubleValue());
/* Salida 1.42*/
Доказательство используя String.format
double valor = 123.456789;
String.format("%.3f", valor) // 123.456
Ты можешь сочетать все такой, для этого случая это компактная форма, и что позволяет тебе форматировать все объединенный в единственной линии.
String.format("El triangulo es %s.\nEl area es (%.3f).\nEl perimetro es (%.3f).", t, a, p)
Имей в виду, что format берет ее автоматически конфигурация locale, следовательно в зависимости от страны, смоги использовать .
или ,
как разделитель десятичных.
Ты можешь использовать один DecimalFormat
. Например:
DecimalFormat formato = new DecimalFormat("#.000");
System.out.println(formato.format(p));
Он возвратит тебе твою стоимость с тремя десятичными. Ты был бы должен добавлять (или снимать) столько нулей, как десятичные ты хотел после целого числа.
double
, что ты можешь делать, состоит в том, чтобы менять формат presentaci и # 243; n из типов плавающей точки, но ты не можешь уменьшать Ваших десятичных. Если ты хочешь уменьшить десятичные и округлить и операции с этим типом результатов, обязанности и # 225; s использоватьBigDecimal
или какой-то сходный класс. – 23.10.2016, 20:48