我需要将一个intvariables转换为double

可能重复:
Java整数部分:你如何产生一个双?

我的朋友正在尝试做一些类似的计算任务,他有一些麻烦,我希望你能帮助他。

问题是他从用户那里得到一个input(它必须是它的一部分)。 他正试图在下面的代码中将其转换为double,但这不起作用。 反正结果是int。

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

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

您必须将一个(或两个)参数投给除法运算符以double

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

既然你正在执行相同的计算两次,我build议重构你的代码:

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

这个工作方式是一样的,但是现在有一个隐含的转换加倍。 从intdouble这种转换是扩展原始转换的一个例子。

转换为double可以通过将int转换为double来完成:

你可以使用这个机制来把int转换成double:

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

另类(使用Java的自动types识别):

 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)types的硬参数来让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))); 

祝你好运。

我认为你应该通过调用方法doubleValue()来施放variables或使用Integer类。

或者像其他人所说的那样使用转换,或者将其中一个intvariables乘以1.0

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