백준

[백준 1008] A/B JAVA - BigDecimal 사용

오은이 2024. 11. 18. 16:44

 

 

 

 

 

 


 

 

 

 

 

 

기존 작성 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        double a = sc.nextDouble();
        double b = sc.nextDouble();
        
        System.out.println(a/b);
    }
}

 

 

 

 

예제 테스트

입력
1 3

출력
0.3333333333333333

 

정답 값은 소수점 아래 32개의 숫자가 나오지만, double형의 값 범위 때문에 16자리까지밖에 표현되지 않았다.

 

 

 

 

 

 

 

 

 

 

 

변경 코드

import java.math.BigDecimal;
import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        BigDecimal a = sc.nextBigDecimal();
        BigDecimal b = sc.nextBigDecimal();
        
        BigDecimal result = a.divide(b, 32, BigDecimal.ROUND_HALF_UP);
        
        System.out.println(result);
    }
}

 

BigDecimal로 변경 후 연산 시 최대 소수점 아래 자릿수를 지정한다.

 

 

 

 

예제 테스트

입력
1 3

출력
0.33333333333333333333333333333333

 

 

 

 

채점 결과