Подтвердить что ты не робот

Мне нужно преобразовать переменную int в double

Возможный дубликат:
Разделение Java Integer: как вы производите двойной?

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

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

double firstSolution = ((b1 * a22 - b2 * a12) / (a11 * a22 - a12 * a21));
double secondSolution = ((b2 * a11 - b1 * a21) / (a11 * a22 - a12 * a21));

Если вам нужно больше объяснений, я попрошу его об этом. Спасибо заранее!

4b9b3361

Ответ 1

Вам нужно передать один (или оба) аргумента оператору деления на double:

double firstSolution = (b1 * a22 - b2 * a12) / (double)(a11 * a22 - a12 * a21);

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

double determinant = a11 * a22 - a12 * a21;
double firstSolution = (b1 * a22 - b2 * a12) / determinant;
double secondSolution = (b2 * a11 - b1 * a21) / determinant;

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

Ответ 2

Преобразование в double можно сделать с помощью casting int в double:

Вы можете преобразовать int в double, используя этот mechnism следующим образом:

int i = 3; // i is 3
double d = (double) i; // d = 3.0

Альтернатива (с использованием автоматического распознавания типов Java):

double d = 1.0 * i; // d = 3.0

Реализация этого в вашем коде будет выглядеть примерно так:

double firstSolution = ((double)(b1 * a22 - b2 * a12) / (double)(a11 * a22 - a12 * a21));
double secondSolution = ((double)(b2 * a11 - b1 * a21) / (double)(a11 * a22 - a12 * a21));

В качестве альтернативы вы можете использовать жесткий параметр типа double (1.0), чтобы иметь java для работы для вас, например:

double firstSolution = ((1.0 * (b1 * a22 - b2 * a12)) / (1.0 * (a11 * a22 - a12 * a21)));
double secondSolution = ((1.0 * (b2 * a11 - b1 * a21)) / (1.0 * (a11 * a22 - a12 * a21)));

Удачи.

Ответ 3

Я думаю, что вы должны использовать переменную или использовать класс Integer методом вызова doubleValue().

Ответ 4

Либо использовать кастинг, как уже говорили другие, или умножить одну из переменных int на 1.0:

double firstSolution = ((1.0* b1 * a22 - b2 * a12) / (a11 * a22 - a12 * a21));