あまりにも頻繁に、次のようなものを書いていることに気づきました。
int part = 7;
int whole = 10;
...
int percentage = (int) (100.0 * (double) part/ (double) whole);
(変数の元の型を実際に変更せずに)キャストの数を最小限に抑える方法はありますか?
問題のコードは次と同等です。
int percentage = (int) (100.0 * part/ whole);
double 引数の算術演算は double の結果を返すためpart
、whole
自動的に double に変換されます
問題のコードは次と同等です。
int percentage = 100 * part / whole;
double から int へのキャスト変換と整数除算がどのように機能するかのおかげで、浮動小数点演算はまったくありません。(最終的に小数部を捨てているのなら、わざわざ計算する必要はありません。)
キャストする必要はありません。操作で自動的にキャストされ100.0*part/whole
、 double 値が得られます。整数で一度キャストするだけで、最終値になります
int percentage = (int) (100.0 * part/ whole);