这是一个基本的问题,但我找不到答案。我研究了浮点算术和其他一些主题,但似乎还没有解决这个问题。我确定我只是用错了术语。
基本上,我想取两个数量-已完成和总计-并将它们相除,得出百分比(已完成的数量)。数量是long
s。设置如下:
long completed = 25000;
long total = 50000;
System.out.println(completed/total); // Prints 0
我尝试将结果重新分配给一个双倍打印的0.0
。我哪里错了?
顺便说一句,下一步是将这个结果乘以100,我认为一旦跨过这个小障碍,这应该很容易。
顺便说一句,这里没有家庭作业,只是普通的麻木(也许现在有太多的编码)。
发布于 2016-07-15 02:02:49
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
只需对它们中的任何一个进行类型转换。
发布于 2011-08-28 19:36:35
在进行划分时,将completed
和total
都转换为double
,或者至少将它们转换为double
。例如,将变量转换为双倍,而不仅仅是结果。
公平的警告,在使用float
和double
时有一个floating point precision problem。
发布于 2011-08-28 19:36:39
如果在除法之前没有显式地将两个值中的一个转换为浮点数,那么将使用整数除法(这就是为什么你得到0)。您只需要两个操作数中的一个作为浮点值,这样就可以使用正常除法(而其他整数值会自动转换为浮点数)。
只需尝试
float completed = 50000.0f;
一切都会好起来的。
https://stackoverflow.com/questions/7220681
复制相似问题