본문 바로가기

Server Oriented/Java & JSP

Math.round() 를 이용한 소숫점 반올림

import java.lang.Math; 를 하고.. 아, java.lang.* 은 import 할 필요가 없네요.. ㅋㅋ


Math.round(20.1) 은 20, Math.round(20.5) 는 21.. 이런식으로 return 값은 int 형.

그러면, Math.round() 를 이용해서 소숫점 반올림을 하려면..?


만약, 소수 3째 자리에서 반올림해서 소수 2째 자리 수치를 만들어야 한다면..

Math.round(20.445) 하면, 20 이라 나올테니까..

Math.round(20.445 * 100) 하면, 2045 이고 이걸 100으로 나누면 될텐데..

Math.round(20.445 * 100) /100 으로 할 때 정수끼리 연산이니까 20 이 된다..

나눌 수를 double 형으로 바꾸면 결과값도 double 이 되니까..

Math.round(20.445 * 100) / 100d 라고 하면 되겠지.. ㅋ


이걸 method 로 하려면..?

100 을 곱하고 100 으로 나누고를 표현해야 하는데, 이것은 Math.pow() 를 사용하자..

Math.pow() 는 double 형이니까 사용하기에도 딱이다.

그러면, 아래와 같이 되는데..

public double getRound(double a, int n){

  return Math.round(a * Math.pow(10,n)) / Math.pow(10,n);

}