混合类型的数学计算

时间:2013-02-28 12:33:08

标签: java math casting

我经常发现自己写的是:

int part = 7;
int whole = 10;
...

int percentage = (int) (100.0 * (double) part/ (double) whole);

有没有办法将演员人数减少到最少(实际上没有修改变量的原始类型......)?

3 个答案:

答案 0 :(得分:5)

有问题的代码相当于:

int percentage = (int) (100.0 * part/ whole);

对双参数的算术运算会产生双重结果,因此partwhole会自动转换为双精度

答案 1 :(得分:2)

有问题的代码相当于:

int percentage = 100 * part / whole;

没有任何浮点运算,这要归功于double转换为int和整数除法的转换方式。 (如果到最后你还是扔掉了小部分,为什么还要计算它。)

答案 2 :(得分:1)

你不需要强制转换,它会在你的操作中自动生成100.0*part/whole给你一个双精度值,只需在整数中投一次,这将是最终值

int percentage = (int) (100.0 * part/ whole);