JavaScript/JavaScript 문법

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

DevStory 2021. 12. 24.

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

이번 포스팅에서는 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
반응형

댓글