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

2022-09-01 00:58:10

很抱歉这个基本问题,我必须将长整型变量除以另一个长整型变量,但它返回0。任何人都可以帮忙吗?

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

答案 1

文字值和文字算术

该代码存在几个问题。首先,默认情况下,非浮点文本值的类型是,因此在代码中是 .改为显式声明它。int3004230intlong3004230L

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

因此,您应该执行以下操作以获得实际结果。

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 */

我希望这有帮助。


答案 2
final long a = 3004230;
final long b = 6793368;
final double c = ((double) a / b) * 100;

=> c = 44.22298335670907