Javascript - 소수점 자릿수를 반올림, 올림, 내림을 하는 방법

자바스크립트에서 소수점을 내리거나 올리거나 혹은 반올림하는 방법을 알고 계신가요? 소수점 계산을 해야 하는 경우가 별로 없다 보니 Math 객체에 대해 크게 관심을 가져 본 적이 없는데요. 이번에 반올림(round), 올림(ceil), 내림(floor)을 사용해 소수점 단위까지 검증이 필요한 요구사항을 구현하게 되어 Math에 대해 알아보려고 합니다. 아 그리고 소수점 처리에서 빠질 수 없는 Number 객체 toFixed()도 같이 공부해보겠습니다.

소수점 반올림 - Math.round()

 반올림은 근삿값을 구할 때 4 이하의 수는 버리고 5 이상의 수는 윗자리에 1을 더하는 방법입니다. 예를 들어 0.4를 반올림하면 1, 0.5 반올림하면 1이 됩니다. 자바스크립트에서 소수점 반올림은 Math.round()를 사용하면 됩니다. 예제 코드로 Math.round()의 반올림 처리를 확인해보겠습니다.

console.log(Math.round(0.4));
// output: 0

console.log(Math.round(0.5));
// output: 1

 다만 음수의 경우에는 아래와 같이 결과가 나오기 때문에 필요에 따라서는 음수를 양수로 바꾸어 반올림 후 다시 음수로 변환해야 는 상황이 발생할 수 도 있습니다.

console.log(Math.round(1.5), Math.round(1.51));
// output: 2 2

console.log(Math.round(-1.5), Math.round(-1.51));
// output: -1 -2

소수점 올림 - Math.ceil()

 올림은 어림수를 구할 때 0이 아닌 숫자가 있을 경우 구하려는 자리의 숫자를 1만큼 크게 하고 나머지 수는 모두 버리는 것을 말합니다. 예를 들어 0.1 ~ 0.9를 올림 하면 1이 됩니다. 자바스크립트에서 올림은 Math.ceil()을 사용할 수 있습니다. 반올림과 마찬가지로 Math.ceil()의 올림 처리를 예제 코드로 확인해보겠습니다.

console.log(Math.ceil(0.1));
// output: 1

console.log(Math.ceil(0.9));
// output: 1

 소수점 올림도 반올림처럼 음수의 경우에는 0에 수렴하는 결과가 만들어지기 때문에 상황에 따라서는 양수로 변환해서 처리해야 하는 경우가 발생할 수 있습니다.

console.log(Math.ceil(-1.95));
// output: -1

console.log(Math.ceil(-1.1));
// output: -1

소수점 내림 - Math.floor()

 내림은 어림수를 구할 때 구하려는 자리의 숫자가 무엇이든 그 자리 이하 숫자를 0으로 바꾸는 것을 의미합니다. 예를 들어 0.1 ~ 0.9를 내림하면 0이 됩니다. 자바스크립트에서 내림은 Math.floor()을 사용합니다. 예제 코드를 통해 Math.floor() 실행 결과를 확인해보겠습니다.

console.log(Math.floor(1.1));
// output: 1

console.log(Math.floor(1.95));
// output: 1

특정 자릿수 반올림 - Number.toFixed()

 소수점을 특정 자릿수를 기준으로 반올림이 필요한 경우에는 Number 객체가 가지고 있는 toFixed() 함수를 사용할 수 있습니다. 그럼 toFixed() 함수도 예제 코드를 통해 알아보도록 하겠습니다.

const number = 0.12345;

console.log(number.toFixed(3));
// output: 0.123

console.log(number.toFixed(4));
// output: 0.1235

 Number.toFixed()는 고정 소수점 표기법으로 때에 따라서는 반올림과 상관없이 특정 자릿수까지 표기할 때 사용되기도 합니다. 

function financial(x) {
return Number.parseFloat(x).toFixed(2);
}

console.log(financial(0.12));
// output: 123.46

console.log(financial(0.004));
// output: 0.00

특정 자릿수 올림 혹은 내림 - ceil(), floor()

 앞서 이야기한 ceil(), floor(), toFixed()를 사용해서 특정 자릿수를 기준으로 올림 하거나 내림을 하는 함수를 만들어보겠습니다. 예제 코드는 소수점 넷째 자리를 올림, 내림하여 소수점 셋째 자릿수를 반환하는 내용입니다.

function ceil(number) {
    return (Math.ceil(number * 1000) / 1000).toFixed(3);
}

function floor(number) {
    return (Math.floor(number * 1000) / 1000).toFixed(3);
}

console.log(ceil(0.0001));
console.log(ceil(0.0005));
console.log(ceil(0.0009));
// output: 0.001

console.log(floor(0.0001));
console.log(floor(0.0005));
console.log(floor(0.0009));
// output: 0.000

 새롭게 정의한 ceil(), floor() 함수는 내부적으로 Math.ceil(), Math.floor()을 사용하여 특정 자릿수를 올리거나 내리고, toFixed()를 사용해 정의한 자릿수의 소수점 값을 반환하게 만들었습니다.

 

 글에서 이용한 코드들은 첨부파일을 통해서 확인할 수 있도록 제공하니 코드가 필요하신 분은 다운로드하여 확인해보세요.

decimal_sample.html
0.00MB

반응형

댓글

Designed by JB FACTORY