일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 블록체인
- 백서
- 알고리즘
- 마스터링 이더리움
- 개인키
- python
- 마스터링비트코인
- 블록체인개발
- 레디스
- 개발
- 주소
- js
- javascript
- 문자열
- smart contract
- Ethereum
- node js
- solidity
- 암호화폐
- 공개키
- pythonic
- 마스터링 비트코인
- 솔리디티
- keras
- 이더리움
- 스마트컨트랙트
- Redis
- 파이썬
- 비트코인
- DAPP
- Today
- Total
개발이야기
[ Javascript ] toFixed 함수는 왜 string 을 반환할까 ? 본문
자바스크립트에서 소수점 반올림을 위해 사용된는 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
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