Как ограничивать количество десятичных double?

Как глава говорит, я хочу ограничить количество десятичных, что следует из операции с переменными тип 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+").");
12
задан 23.10.2016, 20:52
3 ответа

Существуй большие способы ограничивать количество десятичных выпяченной (Презентации) одного double , больше не числа, если, например для double number = 1.4159999999; ограничивать вывод 2 десятичными. если Вы желаете больше цифр, это вопрос добавления нулей в decimalformat и Round, cambiar el 2 por por la cantidad deseada enString.formatyprintfY y ensetScaledeBigDecimal'

  1. Используя DecimalFormat

     DecimalFormat df = new DecimalFormat("#.00");
     System.out.println(df.format(number));
     /* Salida : 1.42*/
    
  2. Используя String. Format

    System.out.println(String.format("%.2f", number));
    /* Salida : 1.42*/
    
  3. Если он только желает, по отношению к которому вывод имел этот формат, применился бы numberformat

    System.out.printf("Valor: %.2f", number ); 
    /* Salida : 1.42*/
    
  4. Посредством Math. Round (), где количество нулей - количество десятичных, чтобы граничить

    System.out.println((double)Math.round(number * 100d) / 100d);
     /* Salida : 1.42*/
    
  5. Используя класс BigDecimal, используя метод setScale, что получает два параметра, количество десятичных, чтобы граничить и способ округления

    BigDecimal bd = new BigDecimal(number);
    bd = bd.setScale(2, RoundingMode.HALF_UP);
    System.out.println(bd.doubleValue());
    /* Salida 1.42*/
    
21
ответ дан 24.11.2019, 12:58
  • 1
    Существуй большие способы ограничивать количество десятичных double t и # 233; cnicamente не , не существуют способы снимать десятичные один double, что ты можешь делать, состоит в том, чтобы менять формат presentaci и # 243; n из типов плавающей точки, но ты не можешь уменьшать Ваших десятичных. Если ты хочешь уменьшить десятичные и округлить и операции с этим типом результатов, обязанности и # 225; s использовать BigDecimal или какой-то сходный класс. –  23.10.2016, 20:48

Доказательство используя 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, следовательно в зависимости от страны, смоги использовать . или , как разделитель десятичных.

7
ответ дан 24.11.2019, 12:58

Ты можешь использовать один DecimalFormat. Например:

DecimalFormat formato = new DecimalFormat("#.000");

System.out.println(formato.format(p));

Он возвратит тебе твою стоимость с тремя десятичными. Ты был бы должен добавлять (или снимать) столько нулей, как десятичные ты хотел после целого числа.

4
ответ дан 24.11.2019, 12:58