08
01
728x90

자바로 문제를 풀다보면 소수점 몇째 자리까지 출력하라는 조건이 종종 나오곤 한다.

 

 

 

double형의 두 수인 5.0과 3.0을 나눈 값을 출력하면 우측처럼 1.6666666666666667로 출력 가장 끝부분 다음 자리에서 반올림한 값이 나온다.

 

이 때, 소수점 세 번째 자리까지만 출력하고싶다면 어떻게 해야할까?

 

첫 번째. System.out.printf() 사용

단순히 println()을 사용하지 말고 printf() 메소드에서 첫 번째 인자로 몇 번째 자리까지 출력할지 정해주고 출력하는 방법이다.

 

이 방법은 가장 단순하지만 리턴값이 나오지 않는다.

 

 

두 번째. String.format() 사용

자바에서 문자열을 다루는 String 클래스는 매우 다양하게 사용될 때가 있는데 이 때가 그 중 하나이다.

 

 

String클래스의 resultS를 만들고 여기에 String.format("%.3f", result);한 String 리턴값을 저장해 그것을 출력하는 방법이다.

몇자리까지 출력할지는 %.3부분을 수정하고, 어떤 값을 수정할지는 result부분을 수정하면 된다.

 

세 번째. Math.round() 사용

 

 

Math.round() 메소드를 사용하면 소숫점 첫째 자리에서 반올림 해버린다. (출력 첫번째 줄)

그래서 소숫점 세 자리를 얻기 위해 1000을 곱해 정수부분을 네 자리로 만들고 (출력 두번째 줄)

그 결과를 1000.0으로 나누면 원하는 소숫점 세자리만 담을 수 있다. (출력 마지막 줄)

1000으로 나누면 1000은 int형이라서 소수점 아래가 0이 되어버리니 주의해야한다.

 

728x90
COMMENT