Java

[Java] 오버플로, 언더플로, BigInteger

bornsoon 2024. 9. 24. 17:12

오버플로우(Overflow), 언더플로우(Underflow)가 발생해도 오류가 나지 않고 실행이 되기 때문에

아주 큰 숫자나 아주 작은 음수를 다룰 때 주의 깊게 처리해야한다!!!

---> BigInteger를 사용하는 방법도 있다.

package basic.type;

import java.math.BigInteger;   // 큰 숫자를 다루기 위한 확장형 BigInteger

public class TypeEx02 {

	public static void main(String[] args) {
		
		int c =1234;
		long d = 123456;  // 123456L : 자동형식변환

		
		// 오버플로, 언더플로
		
		System.out.println(Long.MAX_VALUE);
		// 9223372036854775807 출력
		System.out.println(Long.MAX_VALUE + 1);
		// 음수값 -9223372036854775808..이 출력됨
		// --> 오버플로 발생하지만 오류가 발생되지 않음!!==> 위험!!
		
		System.out.println(Long.MIN_VALUE);
		// -9223372036854775808 출력
		System.out.println(Long.MIN_VALUE - 1);
		// 양수값 9223372036854775807이 출력됨
		// --> 언더플로 발생하지만 오류가 발생되지 않음!!==> 위험!!
		
		BigInteger e = new BigInteger("100000000000000000000000000000");
		BigInteger f = new BigInteger("1");
		System.out.println(e.add(f));
        // 100000000000000000000000000001 출력
		
	}

}
728x90