我需要将int变量转换为double

Sam*_* E. 58 java

可能重复:
Java整数除法:你如何产生双重?

我的朋友正试图将某种计算作为课堂上的任务,他遇到了一些麻烦......我希望你能帮助他.

问题是他从用户那里获得了一个输入(必须是,它是任务的一部分).他试图在下面的代码中将其转换为double,但这不起作用.无论如何,结果都是int.

double firstSolution = ((b1 * a22 - b2 * a12) / (a11 * a22 - a12 * a21));
double secondSolution = ((b2 * a11 - b1 * a21) / (a11 * a22 - a12 * a21));
Run Code Online (Sandbox Code Playgroud)

如果你需要更多解释,我会问他.提前致谢!

Mar*_*ers 91

您必须将一个(或两个)参数转换为除法运算符double:

double firstSolution = (b1 * a22 - b2 * a12) / (double)(a11 * a22 - a12 * a21);
Run Code Online (Sandbox Code Playgroud)

由于您执行两次相同的计算,我建议您重构代码:

double determinant = a11 * a22 - a12 * a21;
double firstSolution = (b1 * a22 - b2 * a12) / determinant;
double secondSolution = (b2 * a11 - b1 * a21) / determinant;
Run Code Online (Sandbox Code Playgroud)

这以同样的方式工作,但现在有一个隐式转换加倍.此从转换intdouble是一个的例子宽元数据转换.


Reu*_*ani 40

转换为加倍可以这样做铸造一个int为双:

您可以使用此mechnism像这样一个int转换为双:

int i = 3; // i is 3
double d = (double) i; // d = 3.0
Run Code Online (Sandbox Code Playgroud)

替代方案(使用Java的自动类型识别):

double d = 1.0 * i; // d = 3.0
Run Code Online (Sandbox Code Playgroud)

在您的代码中实现这一点将是这样的:

double firstSolution = ((double)(b1 * a22 - b2 * a12) / (double)(a11 * a22 - a12 * a21));
double secondSolution = ((double)(b2 * a11 - b1 * a21) / (double)(a11 * a22 - a12 * a21));
Run Code Online (Sandbox Code Playgroud)

或者你可以使用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)));
Run Code Online (Sandbox Code Playgroud)

祝好运.


use*_*691 10

我认为你应该Integer通过call out方法来转换变量或使用class doubleValue().

  • 从 `int` 转换为 `double` 是不可能的,但是 `doubleValue ()` 帮助了我,谢谢。 (2认同)

sam*_*hen 5

使用其他人已经说过的类型转换,或将int变量之一乘以1.0

double firstSolution = ((1.0* b1 * a22 - b2 * a12) / (a11 * a22 - a12 * a21));
Run Code Online (Sandbox Code Playgroud)