0

我发现自己经常写这样的东西:

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

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

有没有办法将强制转换的数量减少到最低限度(而不实际修改变量的原始类型......)?

4

3 回答 3

5

有问题的代码相当于:

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

对双参数的算术运算给出双精度结果,因此partwhole自动转换为双精度

于 2013-02-28T12:34:57.060 回答
2

有问题的代码相当于:

int percentage = 100 * part / whole;

由于 double 到 int 的强制转换和整数除法的工作原理,没有任何浮点运算。(如果最终你还是把小数部分扔掉了,为什么还要计算它。)

于 2013-02-28T15:57:46.457 回答
1

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

int percentage = (int) (100.0 * part/ whole);
于 2013-02-28T12:36:09.770 回答