可能重复:
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)
这以同样的方式工作,但现在有一个隐式转换加倍.此从转换int到double是一个的例子宽元数据转换.
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变量之一乘以1.0:
double firstSolution = ((1.0* b1 * a22 - b2 * a12) / (a11 * a22 - a12 * a21));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
520630 次 |
| 最近记录: |