初学者Java问题(int,float)

时间:2010-09-15 01:27:37

标签: java

int cinema,dvd,pc,total;
double fractionCinema, fractionOther;
fractionCinema=(cinema/total)*100; //percent cinema

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

4 个答案:

答案 0 :(得分:14)

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

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

例如:

fractionCinema = (cinema / (double)total) * 100;

答案 1 :(得分:5)

请改为尝试:

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

答案 2 :(得分:2)

当你划分两个int时,Java将进行整数除法,并且小数部分将被截断。

您可以通过cinema/(double) total显式地将其中一个参数强制转换为double,或隐式使用cinema*1.0/total等操作

答案 3 :(得分:0)

正如一些人已经说过的那样,Java在进行整数除法时会自动切断任何小数部分。只需将变量从int更改为double。