我需要将一个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;
这个工作方式是一样的,但是现在有一个隐含的转换加倍。 从int
到double
这种转换是扩展原始转换的一个例子。
转换为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));