如何在java中划分两个长变量

新手上路,请多包涵

对于基本问题,我很抱歉,我必须将长变量除以另一个长变量,但它返回 0。有人可以帮忙吗

long a = 3004230;
long b =  6793368;
long c = (a/b)*100;

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

阅读 284
1 个回答

文字值和文字算术

该代码有几个问题。首先,非浮点 文字值 的类型是 int 默认情况下,所以 3004230 在你的代码中是一个 int 要明确声明它为 long 使用 3004230L 代替。

此外,所有使用非浮点 文字 完成的算术运算都会返回 int 结果,除非其中一个变量被专门转换为浮点类型,例如 floatdouble 。因此 (a/b)*100 小于 1,因此被 截断 为 0(浮点值被截断)。此外,即使它确实返回了相同的结果,您也试图将其存储在不能存储浮点值的 long 中。

所以,你应该做类似下面的事情来获得真正的结果。

 long a = 3004230L; // Use the L notation to declare this literal a long.
long b = 6793368L;
double c = ((double) a/b)*100; /* casting one of the variables to (double) means the result will not be 0 */

我希望这有帮助。

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

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