숫자처리클래스 : java.util.Random, java.math.BigInteger, java.math.BigDecimal

java.util.Random 클래스

예시1 : 주사위를 무작위로 던져 그 만큼 전진하기

1
2
3
4
5
6
7
8
9
10
11
public class RandomTest {
public static void playDice(Random random){
int step = random.nextInt(6);
System.out.println((step+1)+"만큼 전진");
}

public static void main(String[] args) {
Random r = new Random();
playDice(r);
}
}

예시2 : 주사위를 무작위로 한 번 더 던질 수 있는 보너스 기회를 얻어서 전진하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class RandomTest {
public static void playDice(Random random){
int step = random.nextInt(6);
System.out.println((step+1)+"만큼 전진");
}

public static void main(String[] args) {
Random r = new Random();
playDice(r);
if(r.nextBoolean()){
System.out.println("보너스 스테이지");
playDice(r);
}
}
}
//출력값 : 랜덤값이라서 계속 변한다
5만큼 전진
보너스 스테이지
2만큼 전진




java.math.BigInteger 클래스와 java.math.BigDecimal클래스

  • long도 큰 범위의 정수를 표현하지만 한계가 있다 -> 아무리 큰 수도 저장할 수 있는 BigInteger클래스를 사용할 수 있다.
  • HOW? 클래스가 내부적으로 int[]에 값을 저장하기 때문!
  • 사용법 :
    • 생성자에 꼭 string타입으로 정수를 적어줘야한다.
    • BigInteger b = new BigInteger("12345678901234567890");
    • BigDecimal d = new BigDecimal("2.0");
  • 사용처 : 정수를 안정적으로 표현할 때 사용. 그럼 실수는? java.math.BigDecimal클래스를 이용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static void main(String[] args) {
//1.long보다 큰 정수 out of range에러출력된다.
//long l1 = 12345678901234567890L;
//System.out.println(l1);
//출력값 The literal 12345678901234567890L of type long is out of range

//2.BigInteger에 담아봤지만 값이 잘렸다.
BigInteger bi = new BigInteger("12345678901234567890");
System.out.println(bi.longValue());
//출력값 값이잘림 -6101065172474983726

//3.try catch문을 이용하여 안정적으로 사용가능하다
try{
System.out.println(bi.longValueExact());
}catch (Exception e){
System.out.println("범위를 벗어남");
}
System.out.println(bi.doubleValue());
}
//출력값
-6101065172474983726
범위를 벗어남
1.2345678901234567E19