我经常发现自己写的是:
int part = 7;
int whole = 10;
...
int percentage = (int) (100.0 * (double) part/ (double) whole);
有没有办法将演员人数减少到最少(实际上没有修改变量的原始类型......)?
答案 0 :(得分:5)
有问题的代码相当于:
int percentage = (int) (100.0 * part/ whole);
对双参数的算术运算会产生双重结果,因此part
和whole
会自动转换为双精度
答案 1 :(得分:2)
有问题的代码相当于:
int percentage = 100 * part / whole;
没有任何浮点运算,这要归功于double转换为int和整数除法的转换方式。 (如果到最后你还是扔掉了小部分,为什么还要计算它。)
答案 2 :(得分:1)
你不需要强制转换,它会在你的操作中自动生成100.0*part/whole
给你一个双精度值,只需在整数中投一次,这将是最终值
int percentage = (int) (100.0 * part/ whole);