CASE2 のようないくつかの計算をコーディングしました (実際に行ったことの非常に単純化された例を以下にコピーしました)、悪い結果が得られました。CASE1 のようにコードをリファクタリングし、正常に動作しました。CASE 2 に暗黙のキャストがあることは知っていますが、完全な理由はわかりません。以下で正確に何が起こっているのか、誰でも説明できますか?
//CASE 1, result 5.5
double auxMedia = (5 + 6);
auxMedia = auxMedia / 2;
//CASE 2, result 5.0
double auxMedia1 = (5 + 6) / 2;
//CASE 3, result 5.5
double auxMedia3 = (5.0 + 6.0) / 2.0;
//CASE 4, result 5.5
double auxMedia4 = (5 + 6) / 2.0;
私の推測では、CASE2 の /2 は (5 + 6) を int にキャストし、除算を 5 に丸めてから、再度 double にキャストして 5.0 に変換しています。
CASE3 と CASE 4 も問題を修正します。