'Math.round'에 해당되는 글 1건

  1. 2008.06.15 Math.round() 반올림 하기 4
Math클래스에는 수를 반올림이나 올림 내림등을 제공하는 floor(내림) , ceil(올림) , round(반올림,반내림)를 제공한다. 앞서 Math클래스의 메서드를 살펴보았지만 소수점의 이동이나 5가 아닌 다른 값의 근접한 수로 반올림 또는 반내림 하고 싶을 때 약간의 연산이 필요하다.

* 소수점 자리의 값을 반올림 하고 싶다.
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보다 적으므로 반내림한다.
따라서 Math.round( 25.5525 / .01 )는 2555를 반환하고 그 값에 .01을 곱하여 다시 2두리의 소수점의 값을 얻어낸다.



* 근접한 수가 5가 아닌 다른 수로 정하고 싶다
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씩 끊어서 반올림이나 반내림을 하는 것이다.



Posted by 버터백통