初学者Java问题(int,float)

bit*_*moe 5 java

int cinema,dvd,pc,total;
double fractionCinema, fractionOther;
fractionCinema=(cinema/total)*100; //percent cinema
Run Code Online (Sandbox Code Playgroud)

因此,当我运行代码来显示fractionCinema时,它只给我零.如果我将所有的整数改为双打,那么它就会给我我想要的东西.但是,我在其他地方使用电影,电脑和总数,它们必须显示为整数,而不是小数.我该怎么办?

SLa*_*aks 15

除以两个整数(例如2 / 3)时,Java执行整数除法,并截断小数部分.
因此,2 / 3 == 0.

您需要强制Java double通过将操作数强制转换为a 来执行除法double.

例如:

fractionCinema = (cinema / (double)total) * 100;
Run Code Online (Sandbox Code Playgroud)


Dav*_*ble 5

试试这个:

int  cinema, total;
int  fractionCinema;

fractionCinema = cinema*100 / total;   //percent cinema
Run Code Online (Sandbox Code Playgroud)

例如,如果cinema/(double)total是0.5,那么fractionCinema将是50.并且不需要浮点运算; 所有数学都是使用整数运算完成的.

附录

正如@ user949300所指出的,上面的代码向下舍入到最接近的整数.要"正确"舍入结果,请使用:

fractionCinema = (cinema*100 + 50) / total;    //percent cinema
Run Code Online (Sandbox Code Playgroud)