Java 打印完成百分比

Java 打印完成百分比,java,double,long-integer,Java,Double,Long Integer,我试图除以2个长的,以便找到百分比。但是,我只得到0.0%,或者当它们相等时,100.0%。这就是我正在做的 long size = long mem = double avg = (double)(size / mem) * 100; 您正在进行长除法,它会截断数字的小数部分。至少有一个操作数必须是双精度,若要生成非零的双精度,可以执行以下操作: double avg = (double)size / mem * 100; 分子现在变成了一个双,因为cast比除法运算符/做的长除法截断

我试图除以2个长的,以便找到百分比。但是,我只得到
0.0%
,或者当它们相等时,
100.0%
。这就是我正在做的

long size =
long mem = 

double avg = (double)(size / mem) * 100;

您正在进行长除法,它会截断数字的小数部分。至少有一个操作数必须是双精度,若要生成非零的双精度,可以执行以下操作:

double avg = (double)size / mem * 100;

分子现在变成了一个
,因为cast比除法运算符
/

做的
除法截断了数字的小数部分。至少有一个操作数必须是双精度,若要生成非零的双精度,可以执行以下操作:

double avg = (double)size / mem * 100;

如果要避免使用长的十进制数,分子现在变成双精度的,因为强制转换比除法运算符更有效

long percentage = 100 * size / mem; // as an integer.
如果你想要一个小数位,你可以这样做

double percentage = (1000 * size / mem) / 10.0;

如果你想避免长十进制数字,你可以使用

long percentage = 100 * size / mem; // as an integer.
如果你想要一个小数位,你可以这样做

double percentage = (1000 * size / mem) / 10.0;

下次提问前请先搜索。@SotiriosDelimanolis,您会使用什么搜索词?假设OP完全不知道“整数除法”这个术语。@mystical
java长除法results@SotiriosDelimanolis很公平,因为OP在问题中使用了“划分”一词。但是如果OP不知道它与除法有关,那就困难多了。请在下次提问之前进行搜索。@SotiriosDelimanolis,你会使用什么搜索词?假设OP完全不知道“整数除法”这个术语。@mystical
java长除法results@SotiriosDelimanolis很公平,因为OP在问题中使用了“划分”一词。但是如果OP不知道它和除法有什么关系,那就困难多了。谢谢,这成功了。我嘲笑了单词上的长除法。这会起作用,但是你可以得到比你想要的更多的小数位。谢谢,这成功了。我笑了笑单词的长除法这会管用,但是你可以得到比你想要的更多的小数位。在第一种情况下,它会把分数四舍五入。如果你不先乘以100,你会得到建议的0%或100%。如果你先乘以100,它会将百分比向下舍入,得到0,1,2。。99, 100.  如果你乘以1000除以10.0,你会得到0.0,0.1,0.2。。。99.9100.0在第一种情况下,它将舍入分数。如果你不先乘以100,你会得到建议的0%或100%。如果你先乘以100,它会将百分比向下舍入,得到0,1,2。。99, 100.  如果你乘以1000除以10.0,你会得到0.0,0.1,0.2。。。99.9, 100.0