Javaでlong型からint型の変換でオーバーフローを検知する方法について記載します。
long型からint型の変換でオーバーフローを検知する方法
Mathクラス の toIntExact メソッドを使用すると、オーバーフロー発生時に例外( java.lang.ArithmeticException )がスローされます。
構文
Math.toIntExact( long型の値 )
戻り値
int型
実行例( long型の最大値 から int型に変換 )
1 2 3 4 5 |
// long型の最大値をint型にキャストして変換 int num1 = (int)Long.MAX_VALUE; // -1 (オーバーフロー発生) // Math.toIntExactを使用して long型の最大値をint型に変換 int num2 = Math.toIntExact(Long.MAX_VALUE); // 例外発生( ArithmeticException ) |
例外処理は、次のように try – catch で行います。
1 2 3 4 5 |
try { int num2 = Math.toIntExact(Long.MAX_VALUE); }catch( ArithmeticException e ) { // オーバーフロー時の処理 } |