Как напечатать DOUBLE с переменной INT - PullRequest
0 голосов
/ 27 февраля 2019

Я делаю домашнее задание в школе и застрял.Я установил свою переменную как INT, и теперь я не могу ее изменить, потому что я использую ее для других вычислений.Есть ли способ, которым я могу напечатать 3 числа после точки?Я пробовал с printf и (double), но это не сработало.

Это мой кусок кода:

for (int i = 0; i < 2; i++) // Printing Inverse
{
    System.out.print("[");
    output.print("[");
    for (int j = 0; j < 2; j++) {
        sol[i][j] = adj[i][j] / det;
        System.out.printf((double) sol[i][j] + " ");
        output.print((double)sol[i][j] + " ");
    }
}

Ответы [ 4 ]

0 голосов
/ 27 февраля 2019

Я предполагаю, что sol - это двумерный массив int, следовательно, как упоминалось в своем комментарии @ B001, в нем нет цифр после десятичной точки.Если все, что вы хотите сделать, это напечатать результат деления: adj[i][j] / det как double, я предлагаю использовать другую переменную только для печати результата, то есть

double result = (double) adj[i][j] / det;
sol[i][j] = (int) result;
System.out.printf("%.3f", result);
0 голосов
/ 27 февраля 2019

Есть ли способ, которым я могу напечатать 3 числа после точки?Я попытался с printf и (double), но это не сработало.

Хорошее приведение int к double недостаточно для получения ожидаемого результата.

Длянапечатайте приведенный double с тремя десятичными знаками, вам нужно использовать %3f в качестве первого параметра в методе printf, например:

System.out.printf("%.3f", (double) sol[i][j]);

Это живая работадемо .

Примечание:

Обратите внимание, что результатом деления в sol[i][j] = adj[i][j] / det; будет double, поэтому вам необходимообъявите ваши переменные как double вместо int, чтобы избежать получения исключений.

0 голосов
/ 27 февраля 2019

Делая вычисления как int, вы в основном «выбрасываете» информацию.Это означает, что с этого момента невозможно вернуть его обратно.

Поскольку ваш текущий код выглядит как intVariable = intVariable / intVariable; print((double)intVariable), компилятор автоматически использует целочисленное деление, что в основном отбрасывает все десятичные дроби

Вы хотите, чтобы ваш код выглядел как doubleVariable = intVariable / doubleVariable;print(doubleVariable), что означало бы приведение делителя в делении к двойному и изменение типа sol, чтобы он мог содержать doubles вместо того типа, который у вас есть сейчас.

0 голосов
/ 27 февраля 2019

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

Я не уверен, но я думаю, что где-то в Eclipse вы могли бы найти кнопку, которая изменяет вашу переменную и все ее ссылки.

...