我发现自己经常写这样的东西:
int part = 7;
int whole = 10;
...
int percentage = (int) (100.0 * (double) part/ (double) whole);
有没有办法将强制转换的数量减少到最低限度(而不实际修改变量的原始类型......)?
有问题的代码相当于:
int percentage = (int) (100.0 * part/ whole);
对双参数的算术运算给出双精度结果,因此part
并whole
自动转换为双精度
有问题的代码相当于:
int percentage = 100 * part / whole;
由于 double 到 int 的强制转换和整数除法的工作原理,没有任何浮点运算。(如果最终你还是把小数部分扔掉了,为什么还要计算它。)
您不需要强制转换,它会在您的操作中自动强制转换100.0*part/whole
给您一个双精度值,只需在整数中强制转换一次,这将是最终值
int percentage = (int) (100.0 * part/ whole);