parseInt(0.0000001) == 1

Bam·2023년 9월 20일
0

자바스크립트 밈

목록 보기
4/4

(푸 무서워)

parseInt() 파라미터로 주어진 값을 특정 진수의 정수로 반환합니다.

parseInt(, (진수))

이때 진수는 선택사항이며 기본값은 10진수(10)입니다.

즉, 정수를 반환하기 때문에 소수점을 넣으면 소수점 자릿수를 버림하고 돌려주죠.그러면 0.00001, 0.000001, 0.0000001을 넣으면 당연히 결과는 모두 0이어야 하겠죠?하지만 우리의 금쪽이 자바스크립트는 또 말썽을 부립니다.0.0000001을 1이라고 하네요.


0.0000001

왜 그런지 알아보기전에 0.0000001이라는 소수에 대해서 알아보아야합니다.

0.0000001을 다르게 표현하면 1 / 10000000입니다. 그리고 자바스크립트에서 이 연산의 결과는 1e-7라는 지수를 반환합니다.


parseInt()

다음으로는 parseInt()의 동작입니다. 첫번째 파라미터로는 문자열을 받습니다. 만약 문자열이 아닐경우 ToString으로 강제변환을 수행합니다.

그리고 변환한 문자열을 정수로 반환하기 위해서 숫자가 있는 부분까지만 가져와서 숫자로 변환하고 그 뒤의 문자는 싸그리 무시합니다.

따라서 소수점에 표현되는 .은 당연히 사라져서 0.000010이 됩니다.

그리고 0.00000011e-7이 되는데, e가 문자이므로 e 뒤에 등장하는 것들은 모두 무시해버립니다. 따라서 결과적으로 1이라는 결과가 나오게 되는 것 입니다.

0개의 댓글