Какой тип данных следует использовать, если результат будет как десятичным, так и недесятичным - PullRequest
0 голосов
/ 05 августа 2020

Я получаю целые баллы из базы данных. После получения баллов я делаю некоторые вычисления и показываю результат пользователю. Предположим, я получил 20, 21,, 22. Я делаю 21 / 1,5 + 20 + 22, что дает 43,50, но иногда я получаю все, даже если результат будет примерно 50,00. Проблема в том, что я хочу показать 43,50, если десятичное число не равно 00 и 50, если десятичное число равно 00 .. Какой тип данных я должен использовать для вычислений и показывать результаты, как я упоминал выше. СПАСИБО. В настоящее время я использую это, но при использовании целого числа десятичное число не отображается

int tot = a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+a20+a21+a22+a23+a24;

Ответы [ 6 ]

1 голос
/ 05 августа 2020

Сохраните вывод в двойном типе данных, и при отображении поместите на него проверки следующим образом:

    Double result;
    if (result%1.0 == 0.0){
        // show result.intValue();
    } else {
        // show result System.out.printf("result : %.2f%n", result);
    }
0 голосов
/ 05 августа 2020

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

double result = calculate(integers);

Вы заметили, что хотите показать дробную часть вычисленного значения, даже если результат целое число. Java имеет множество вариантов форматирования вывода. Один простой подход - использовать printf.

System.out.printf("result=%.2f%n", result);
0 голосов
/ 05 августа 2020

Вы можете использовать тип данных double или float. Если вам нужно проверить остаток после десятичной точки, вы можете использовать что-то вроде,

            double num = 50.00;
            if (num % 1.0 == 0.0){
            int numOne = (int) num;
            System.out.println(numOne)
            }

Приведенный выше код (от Раджата Мехры), который я редактировал, будет приводить значения с «0» "остаток к целому числу и отобразить их соответствующим образом.

0 голосов
/ 05 августа 2020

Ваша проблема не в расчете, а в отображении результата. Когда вы используете int или Integer для своих расчетов, Java всегда будет округляться в меньшую сторону. Даже float и double являются приблизительными ( см. Здесь ). В зависимости от того, насколько точным должен быть результат, используйте float (средняя точность), double (нормальная точность) или BigDecimal (максимальная точность).

Чтобы решить вашу проблему, рассчитайте свое число с такой точностью, как требуется и определите при печати, как это должно быть представлено, как описано здесь .

0 голосов
/ 05 августа 2020

Из описания сложно указать вам правильное направление.

Пожалуйста, покажите код, как вы показываете результаты в Android.

Что касается типа данных, должно быть ясно, что вы не может преобразовать integer в decimal, потому что вы не можете волшебным образом добавить к нему десятичные значения. Поэтому я думаю, вам нужен тип данных decimal и нужно проверить, является ли это integer, что объясняется здесь: Как проверить, является ли double целым числом

0 голосов
/ 05 августа 2020

Если вы просто хотите представить ровно с двумя десятичными знаками, вы можете использовать DecimalFormat, например, а для вычисления значений с плавающей запятой вы можете использовать тип double или float

DecimalFormat df   = new DecimalFormat("#,##0.00");
String formatedTot = df.format(tot);
System.out.println(formatedTot);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...