본문으로 바로가기

[JavaScript] 소수점 n자리에서 올림, 내림, 반올림

자바스크립트에서 소수점 반올림 관련 toFixed, toPrecision 함수가 있는데 우리가 알고 있는 수학 공식처럼 정확히 떨어지지는 않는다. 소수점 n자리에서 올림, 내림, 반올림 하는 방법을 알아보자.

정수 올림, 내림, 반올림

정수 먼저 알아보자. 정수는 간단하게 Math에 내장되어 있는 함수로 처리할 수 있다.

■ 정수 올림

정수의 경우 Math.ceil 함수를 통해 해결할 수 있다.

console.log(Math.ceil(1))       
console.log(Math.ceil(1.11))
console.log(Math.ceil(1.25))
console.log(Math.ceil(1.61))
console.log(Math.ceil(1.512))

위 결과를 보면 알겠지만 우리가 알고 있는 수학 공식처럼 결과가 딱 떨어진다.

■ 정수 내림, 반올림

정수 내림Math.floor, 정수 반올림Math.round 함수로 해결할 수 있다.

console.log(Math.floor(1))       
console.log(Math.floor(1.11))
console.log(Math.floor(1.25))
console.log(Math.floor(1.61))
console.log(Math.floor(1.512))

console.log(Math.round(1))       
console.log(Math.round(1.11))
console.log(Math.round(1.25))
console.log(Math.round(1.61))
console.log(Math.round(1.512))

위 결과를 보면 올림과 마찬가지고 내림, 반올림처리가 잘된 것을 확인할 수 있다. 그럼 소수점의 경우 어떻게 할까? 소수점도 크게 어렵지 않다. 정확히 소수점 몇 자리인지만 알면 된다.

소수점 올림, 내림, 반올림

소수점 2자리 올림의 경우 아래와 같이 해결할 수 있다.

console.log(Math.ceil(1.11 * 100) / 100)
console.log(Math.ceil(1.25 * 100) / 100)
console.log(Math.ceil(1.61 * 100) / 100)

코드를 보면 이해가 되어야 하는데 소수점 n자리 수만큼 곱하고 올림처리 후 다시 소수점 n자리 수만큼 나눈 것이다. 내림, 반올림처리도 동일하게 하면 된다.

console.log(Math.floor(1.11 * 100) / 100)
console.log(Math.floor(1.25 * 100) / 100)
console.log(Math.floor(1.61 * 100) / 100)

console.log(Math.round(1.11 * 100) / 100)
console.log(Math.round(1.25 * 100) / 100)
console.log(Math.round(1.61 * 100) / 100)

즉, 결론만 말하자면 소수점 n자리만큼 곱하여 정수로 만들어주고 올림, 내림, 반올림 후 다시 n자리만큼 나누어 소수점으로 만들어주면 우리가 알고있는 수학 공식처럼 올림, 내림, 반올림 처리를 할 수 있다.

마지막

해당 내용은 틀릴 수도 있다는 것을 감안하여 봐주세요. 틀린 내용 및 오탈자 수정 요청 환영입니다.

반응형