관리 메뉴

개발이야기

[ Javascript ] toFixed 함수는 왜 string 을 반환할까 ? 본문

node js/Javascript

[ Javascript ] toFixed 함수는 왜 string 을 반환할까 ?

안성주지몬 2019. 12. 10. 00:00

자바스크립트에서 소수점 반올림을 위해 사용된는 toFixed 함수는 string을 반환한다는 것을 알고 계셨나요?

이번 포스팅에서는 왜 toFixed 함수는 string 을 반환하는지에 대해서 알아보고 number 형으로 반환하기 위한 여러가지 대안들에 대해서 알아보도록 하겠습니다.

 

- toFixed가 함수가 string을 반환하는 이유

(스택오버플로우를 참고하여 작성하였습니다.)

자바스크립트에서 0.1과 제곱들은 이진 부동소수점 시스템(binary floating-point system)에서 정확하게 표현되지 않기 때문입니다. 

 

아래의 예시와 같은 숫자들이 각각 0.01, 0.1로 표시가 된다는 것입니다.

// 출력값 > value : 0.01
console.log('value : ', 0.01000000000000000020816681711721685132943093776702880859375)

// 출력값 > value : 0.1
console.log('value : ', 0.1000000000000000055511151231257827021181583404541015625)

따라서 string 타입만이 위와 같은 숫자를 정확하게 표현할 수 있는 유일한 수단이기 때문에 toFixed 함수가 string형을 반환하게 됩니다.

 

 

- string이 아닌 number로 반환하는 여러가지 방법

 

1) Math.round 함수 사용 

let someNumber = 42.008;
someNumber = Math.round( someNumber * 1e2 ) / 1e2; // 소수점 두 자리까지 표현

 

2) Number.prototype에서 직접 정의해주기

Number.prototype.toFixedNumber = function(x, base){
  let pow = Math.pow(base||10,x);
  return Math.round(this*pow) / pow;
}

let someNumber = 42.008;
someNumber = someNumber.toFixedNumber(2);

 

3) parseFloat 또는 Number를 통한 형변환

// parseFloat 사용
let someNumber = 123.456;
someNumber = parseFloat(someNumber.toFixed(2));


// Number 사용
let someNumber = 2.2873424;
someNumber = Number(someNumber.toFixed(2));

 

참고

[1] https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

 

Number.prototype.toFixed()

toFixed() 메서드는 숫자를 고정 소수점 표기법으로 표기해 반환합니다.

developer.mozilla.org

[2] https://stackoverflow.com/questions/2283566/how-can-i-round-a-number-in-javascript-tofixed-returns-a-string

 

How can I round a number in JavaScript? .toFixed() returns a string?

Am I missing something here? var someNumber = 123.456; someNumber = someNumber.toFixed(2); alert(typeof(someNumber)); //alerts string Why does .toFixed() return a string? I want to round the num...

stackoverflow.com

[3] https://www.geeksforgeeks.org/javascript-tofixed-function/

 

JavaScript | toFixed( ) Function - GeeksforGeeks

The toFixed() function in JavaScript is used to format a number using fixed-point notation. It can be used to format a number with a specific… Read More »

www.geeksforgeeks.org

 

Comments