初学者Java问题(int,float)
int cinema,dvd,pc,total; double fractionCinema, fractionOther; fractionCinema=(cinema/total)*100; //percent cinema
因此,当我运行代码来显示fractionCinema时,它只给我零。 如果我将所有的整数改为双打,那么它就会给我我想要的东西。 但是,我在其他地方使用影院,电脑和总计,它们必须显示为整数,而不是小数。 我该怎么办?
除以两个整数(例如, 2 / 3
)时,Java执行整数除法 ,并截断小数部分。
因此, 2 / 3 == 0
。
您需要通过将操作数强制转换为double
来强制Java执行double
除法。
例如:
fractionCinema = (cinema / (double)total) * 100;
试试这个:
int cinema, total; int fractionCinema; fractionCinema = cinema*100 / total; //percent cinema
例如,如果cinema/(double)total
为0.5,则fractionCinema
将为50.并且不需要浮点运算; 所有数学都是使用整数运算完成的。
附录
正如@ user949300所指出的,上面的代码向下舍入到最接近的整数。 要“正确”舍入结果,请使用:
fractionCinema = (cinema*100 + 50) / total; //percent cinema
当你划分两个int
,Java将进行整数除法,并且小数部分将被截断。
您可以通过cinema/(double) total
显式地将其中一个参数强制转换为double,也可以隐式使用诸如cinema*1.0/total
正如一些人已经说过的那样,Java在进行整数除法时会自动切断任何小数部分。 只需将变量从int更改为double。