JavaScript/JavaScript 문법

[JavaScript]소수점 반올림하는 방법

DevStory 2021. 12. 24.

이번 포스팅에서는 JavaScript에서 소수점 반올림하는 방법들을 소개합니다.

 


toFixed() 함수

toFixed() 함수는 인수로 전달된 소수 자릿수로 반올림된 숫자를 문자열 타입으로 반환합니다.

 

다음은 toFixed() 함수 사용 예제입니다.

(123.678).toFixed();
// 124

(123.678).toFixed(1);
// 123.7

(123.678).toFixed(2);
// 123.68

(123.678).toFixed(3);
// 123.678

(123.678).toFixed(4);
// 123.6780

typeof (123.678).toFixed(4);
// string

toFixed() 함수의 반환 결과를 숫자로 변환하기 위해 다음과 같이 Number() 함수를 사용할 수 있습니다.

const roundNum = ((123.678).toFixed(1));

console.log(roundNum);
// 123.7

Math.round() 함수

Math.round() 함수는 인수로 전달된 값을 가장 가까운 정수로 반올림된 숫자를 반환합니다.

 

다음은 Math.round() 함수 사용 예제입니다.

Math.round(123.456);
// 123

Math.round(123.678);
// 124

Math.round(123.9191);
// 124

Math.round() 함수로 정수가 아닌 소수 자릿수로 반올림하고 싶은 경우 다음과 같이 작성합니다.

const num = 6.789;
const roundNum = Math.round(num * 10) / 10;

console.log(roundNum);
// 6.8

소수점 1자리로 반올림하려면 num * 10Math.round() 함수의 인수로 전달합니다. 그리고 Math.round() 함수의 반환 결과를 10으로 나눕니다.

 

소수점 2자리로 반올림하려면 100을 곱하고 100을 나누며, 소수점 3자리로 반올림하려면 1000을 곱하고 1000을 나눕니다.

 

하지만, 위 방법은 항상 정확한 결과를 반환하지 않는다는 문제가 있습니다.

 

1.255를 소수점 2자리로 반올림하면 1.26인데, Math.round() 함수는 잘못된 결과를 반환합니다.

const num = 1.255;
const roundNum = Math.round(num * 100) / 100;

console.log(roundNum);
// 1.25

기본적으로 부동 소수점은 10진법보다 숫자의 정밀도가 떨어지기 때문에 Math.round() 함수로 정확하게 결괏값을 얻을 수 없습니다.

반응형

Math.floor() 함수

Math.floor() 함수는 인수로 전달된 값을 가장 가까운 정수로 내림된 숫자를 반환합니다.

 

다음은 Math.floor() 함수 사용 예제입니다.

Math.floor(123.456);
// 123

Math.floor(123.678);
// 123

Math.floor(123.9191);
// 123

Math.ceil() 함수

Math.ceil() 함수는 가장 가까운 정수로 올림 된 숫자를 반환합니다.

 

Math.round() 함수와는 다르게 Math.ceil() 함수는 무조건 올림 처리합니다.

 

다음은 Math.ceil() 함수 사용 예제입니다.

Math.ceil(123.456);
// 124

Math.ceil(123.678);
// 124

Math.ceil(123.9191);
// 124

toPrecision() 함수

toPrecision() 함수는 인수로 전달된 값만큼 표현할 수의 길이를 제한하며, 숫자를 문자열 타입으로 반환합니다.

 

다음은 toPrecision() 함수 사용 예제입니다.

// 인수를 생략하면 값 그대로 반환
(123.6712).toPrecision();
// 123.6712

// 2자리까지 표현함.
(123.6712).toPrecision(2);
// 1.2e+2

// 3자리까지 표현하며 소수점 1자리에서 반올림됨.
(123.6712).toPrecision(3);
// 124

// 4자리까지 표현하며 소수점 2자리에서 반올림됨.
(123.6712).toPrecision(4);
// 123.7

// 5자리까지 표현하며 소수점 3자리에서 반올림됨.
(123.6712).toPrecision(5);
// 123.67

typeof (123.6712).toPrecision(4);
// string
반응형

댓글