Java中的整数除法

Ben*_*Ben 87 java math floating-point println long-integer

这是一个基本问题,但我找不到答案.我已经研究了浮点运算和其他一些主题,但似乎没有任何东西可以解决这个问题.我确定我的术语错了.

基本上,我想要两个数量 - 完成和总数 - 并将它们分成一个百分比(已经完成了多少).数量是longs.这是设置:

long completed = 25000;
long total = 50000;

System.out.println(completed/total);  // Prints 0
Run Code Online (Sandbox Code Playgroud)

我已经尝试将结果重新分配给双 - 它打印0.0.我哪里错了?

顺便提一下,下一步是将这个结果乘以100,一旦这个小障碍被推翻,我认为应该很容易.

顺便说一句,这里没有作业,只是普通的老字号(今天可能编码过多).

Oli*_*rth 130

转换输出为时已晚; 计算已经在整数运算中进行.您需要将输入转换为double:

System.out.println((double)completed/(double)total);
Run Code Online (Sandbox Code Playgroud)

请注意,您实际上不需要转换这两个输入.只要其中一个是double,另一个将被隐式转换.但我喜欢两者兼顾,以保持对称性.


har*_*old 10

你甚至不需要双打.乘以100 然后再除.否则结果将小于1并被截断为零,如您所见.

编辑:或者如果溢出可能,如果它会溢出(即被除数大于922337203685477581),则将除数先除以100.


Bha*_*ain 8

In Java
Integer/Integer = Integer
Integer/Double = Double//Either of numerator or denominator must be floating point number
1/10 = 0
1.0/10 = 0.1
1/10.0 = 0.1
Run Code Online (Sandbox Code Playgroud)

只需键入其中任何一个即可。