Math 클래스 반올림이나, 내림등 Floor(내림), Ceil(올림), Round(반올림,반내림)을 제공한다.
- Math.round 사용하면 소수점의 첫째 자리의 값이 5 이상이면, 반올림하고 5보다 작으면 반내림을 한다.
Trace( Math.round(25.5525)) -> 출력 : 26
- 원하는 소수점 자리에서 반올림하고 싶을 때
소수점 두자리에서 끊어서 반올림하고 싶을 때는 소수점 이하 두자리 ".01"의 값으로 연산한다. 1은 곱하거나 나누어도 원래의 값을 반환한다는 것을 기억하자.
* 추억의 산수
300 / 1 = 300
300 * 1 = 300
300 / 0.1 = 3000 (소수가 없도록 제수(분자)와 피제수(분모)에 10의 거듭제곱을 곱한다.)
300 * 0.1 = 30 (소수점 이하가 1자리 있으므로, 300끝에 1자리 소수점이 붙는다. 30.0)
위에서 보면 소수점 이하 n자리를 나누면 제수는 n개 만큼 뒤에 수가 붙고, 소수점이하 n자리를 곱하면 제수의
단위는 n개 만큼 축소한다.
Trace( Math.round(25.5525) ) -> 출력 26
위의 결과를 소수점 두자리에서 끊어서 연산하고 싶다면 아래와 같이 코딩한다.
Trace( Math.round(25.5525 / .01) * .01 ) -> 출력 25.55
(25.5525 / .01 ) 에서 10의 거듭제곱을 한 값이 2555.25를 얻게되고 .25는 5보다 작으므로 반내림한다.
반내림한 값에 .01을 곱하여 다시 2자리의 소수점의 값을 얻어낸다.
- 근접한 수가 5가 아닌 다른 수로 정하고 싶을때
Math.round()는 5를 기준으로 반내림이나, 반올림을 한다. 하지만 5가 아닌 수로 반내림이나, 올림을 하고 싶을 때는 위와 같은 방법으로 정수를 사용한다.
Trace( Math.round( 25/6 ) * 6 ) -> 출력 : 24
- 25의 1자리수가 6을 넘지못하면 값을 24를 출력한다. 25를 6으로 분해하면 4.16의 값이 나온다. 6에 관하여, 쪼개진 값을 반올림하면 4이고 다시 6을 곱하면, 분해전의 값으로 복원된다.
Trace( Math.round( 25/10 ) * 10 ) -> 출력 : 30
- 방식은 위와 같고 자리수가 두자리인 10이다. 따라서, 반올림과 내림의 기준을 10씩 끊어서 확인할 수 있다.
Trace( Math.round( 30/10) * 10 ) -> 출력 : 30
Trace( Math.round( 25/100 ) * 100 ) -> 출력 : 0
- 같은 방식이고, 얻어진 값이 소수점이하 0.25 이를 다시 반올림하면, 0이고 100을 곱하여도 0이다.
즉, 100씩 끊어서 반올림이나, 반내림을 하는 것이다.
'공부 > JAVA' 카테고리의 다른 글
JAVA_[ Vector, ArrayList, Object[], HashMap, TreeMap 선택방법 ] (0) | 2014.08.20 |
---|---|
JAVA_[ 예외처리(Exception Handling ] (0) | 2014.08.20 |
JAVA_[문자열(String) 숫자여부 체크] (0) | 2014.02.07 |
JAVA_[ String 와 StringBuffer 성능에 대하여... ] (0) | 2014.01.22 |
JAVA_[ 정규식 pattern. Match ] (0) | 2014.01.22 |