Мне нужно преобразовать переменную 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));
Если вам нужно больше объяснений, я попрошу его об этом. Спасибо заранее!
Ответы
Ответ 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));