我的朋友正试图将某种计算作为课堂上的任务,他遇到了一些麻烦......我希望你能帮助他。
问题是他从用户那里获得了一个输入(必须是,它是任务的一部分)。他试图在下面的代码中将其转换为double,但这不起作用。无论如何,结果都是int。
double firstSolution = ((b1 * a22 - b2 * a12) / (a11 * a22 - a12 * a21));
double secondSolution = ((b2 * a11 - b1 * a21) / (a11 * a22 - a12 * a21));
如果您需要更多解释,我会问他。提前谢谢!
答案 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。从int
到double
的转换是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));