Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 비트코인
- javascript
- 백서
- js
- python
- 암호화폐
- 문자열
- Ethereum
- 개발
- 공개키
- 블록체인개발
- 마스터링 이더리움
- solidity
- 이더리움
- Redis
- 주소
- 파이썬
- DAPP
- 마스터링비트코인
- pythonic
- smart contract
- 블록체인
- 레디스
- node js
- 마스터링 비트코인
- keras
- 개인키
- 솔리디티
- 스마트컨트랙트
- 알고리즘
Archives
- 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
[3] https://www.geeksforgeeks.org/javascript-tofixed-function/
Comments