我需要将int变量转换为double

时间:2012-11-06 14:17:28

标签: java

  

可能重复:
  Java Integer division: How do you produce a double?

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

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

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

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

4 个答案:

答案 0 :(得分:87)

您必须将一个(或两个)参数转换为除法运算符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;

这以同样的方式工作,但现在有一个隐式强制转换为double。从intdouble的转换是widening primitive conversion的一个示例。

答案 1 :(得分:40)

转换为double可以通过casting将int转换为double:

你可以使用这样的机制将int转换为double:

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)));
祝你好运。

答案 2 :(得分:10)

我认为你应该通过调用方法Integer来构建变量或使用doubleValue()类。

答案 3 :(得分:4)

使用其他人已经说过的强制转换,或者将其中一个int变量乘以1.0

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