Десятичный формат, не ограничивающий значения двумя десятичными знаками - PullRequest
0 голосов
/ 24 октября 2018

Я пишу Java-программу, которая преобразует различные единицы измерения.Я хочу ограничить вывод результата до двух знаков после запятой, чтобы он выглядел аккуратнее, однако я изо всех сил пытался заставить его работать.Ниже приведен мой код, пожалуйста, кто-то может помочь.

if (text.isEmpty() == false) {

            double value = Double.parseDouble(text);

            // the factor applied during the conversion
            double factor = 0;

            // the offset applied during the conversion.
            double offset = 0;


            // Setup the correct factor/offset values depending on required conversion
            switch (combo.getSelectedIndex()) {

            case 0: // inches/cm
                factor = 2.54;
                break;

            case 1: // miles/km
                factor = 1.60;
                break;

            case 2: // pounds/kilograms
                factor = 0.45;
                break;

            case 3: // gallons/Litres   
                factor = 4.54;
                break;

            case 4: // feet/meters  
                factor = 0.30;
                break;

            case 5: //  celsius/kelvin
                factor = 1;
                offset=273.15;
                break;

            case 6: //  acres/hectare   
                factor = 2.471;
                break;
            }

            double result = 0;


            if(reverseCheck.isSelected() == true) {
                result = factor / value - offset;


            }else {
                result = factor * value + offset;
            }



            count++;
            labelCount.setText("Conversion Count: "+count);


            label.setText(Double.toString(result));

            DecimalFormat decFormat = new DecimalFormat("0.00");
            decFormat.format(result);

Я новичок в программировании, поэтому, если вы могли бы объяснить, почему этот код не работает, то это было бы очень полезно.Мой вывод в настоящее время слишком много знаков после запятой, и мне нужно, чтобы это было только 2 знака после запятой.

1 Ответ

0 голосов
/ 24 октября 2018

Я новичок в программировании

Итак, первое, что вам нужно узнать, это как упростить проблему.

Я хочу ограничить вывод результата до двух знаков после запятой, чтобы он выглядел аккуратно

Итак, забудьте об остальной части вашего приложения и научитесь делать точночто:

double value =  123.45678;
DecimalFormat decFormat = new DecimalFormat("0.00");
String formatted = decFormat.format(value);
System.out.println( formatted );

Я пишу Java-программу, которая преобразует различные единицы измерения.

Это не имеет отношения к вашему вопросу.Как видно из приведенного выше примера, вы сначала тестируете новую концепцию с жестко закодированными данными.

Как только вы начнете работать, тогда вы будете беспокоиться о математических вычислениях, чтобы динамически получить «значение», которое вы хотите отформатировать.

В настоящее время мои выходные данные содержат слишком много десятичных знаков

label.setText(Double.toString(result));
DecimalFormat decFormat = new DecimalFormat("0.00");
decFormat.format(result);

Видите ли вы проблемы с вышеуказанным кодом?

  1. вы устанавливаете текст метки ДО того, как отформатируете результат
  2. вы надеваетене назначайте форматированный текст переменной, чтобы последний оператор ничего не делал.
...