long値をint値にキャストしたいが、long値がintに収まらない場合は、できるだけ大きなint値にする必要がある。これを行うための簡単な方法は、内のメソッドのように、ありますlongをintに変換してオーバーフローを切り捨てる
long longVar = ...;
int intVar = (int) (longVar < 0 ? Math.max(longVar, Integer.MIN_VALUE) : Math.min(longVar, Integer.MAX_VALUE));
:(負の最大を含めるように)、それは次のようになり、より一般的な方法で
long longVar = ...;
int intVar = (int) Math.min(longVar, Integer.MAX_VALUE)
:私のソリューションは、そのように見えますJREか何か?
'int intVar =(int)Math.min(Math.max(longVar、Integer.MIN_VALUE)、Integer.MAX_VALUE));'? '<0'チェックは必要ありません。ユーティリティメソッドに入れることもできます。 – Fildor
あなたは正しいです。おかげで – David