예! JavaScript에는 정수 데이터 유형이 없습니다.

JavaScript 숫자는 항상 배정밀도 부동 소수점 숫자로 저장됩니다. 정수 데이터 유형이 없습니다. 일부 JavaScript 초보자는 이를 깨닫지 못하고 125 === 125.0이 거짓이라고 믿습니다. 숫자를 정수 데이터 유형으로 가정하는 경우 정확히 이와 관련된 실수가 발생합니다. 이상하게 들릴지 모르지만 다음은 Node.js에서 true로 평가됩니다.

125    // one twenty five.
125.0  // same
125 === 125.0  // returns true


JavaScript 작동 방식에 익숙하지 않은 사람들은 일반적으로 언어를 이해하면 설명하기 쉬운 또 다른 예기치 않은 동작을 언급합니다. 0.1에 0.2를 더하면 0.3000000000000000444089209850062616169452667236328125가 됩니다. 즉, 0.1 + 0.2는 0.3이 아닙니다.

console.log((0.1+0.2) === 0.3) // returns false


불행하게도, 자바스크립트에서 숫자의 단점은 여기서 끝나지 않습니다. 숫자는 부동 소수점이지만 정수 데이터 유형에서 작동하는 연산자는 여기서도 작동합니다.

5 % 2 === 1 // true
5 >> 1 === 2 // true


그러나 큰 정밀도 숫자에 대한 중요한 수학 연산을 구현하는 큰 정수 라이브러리가 많거나 보다 큰 정수를 나타내는 방법을 제공하는 최신 내장 JS 객체 Bigint를 사용할 수 있기 때문에 큰 숫자를 처리하는 동안 걱정할 필요가 없습니다. (2^53)-1.

좋은 웹페이지 즐겨찾기