我需要将一个 int 变量转换为 double

新手上路,请多包涵

我的朋友正在尝试将某种计算作为课堂任务,但他遇到了一些麻烦。

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

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

原文由 Samuel E. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 793
2 个回答

您必须将除法运算符的一个(或两个)参数转换为 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 的转换是 扩大基元转换 的一个例子。

原文由 Mark Byers 发布,翻译遵循 CC BY-SA 3.0 许可协议

转换为 double 可以通过将 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)));

原文由 Reut Sharabani 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题