Unlike many other programming languages, JavaScript does not define different types of numbers, like integers, short, long, floating-point etc.
프로그래머스 멀쩡한 삼각형 : https://programmers.co.kr/learn/courses/30/lessons/62048
을 풀다가 자꾸 테스트 케이스 6번만 안되는 문제상황에 직면했다.
처음에는 내가 예외 상황을 고려하지 않고 답안을 작성했는지 고민하다가 자바스크립트의 소수점 계산 방식을 고려하지 않은 로직을 짰다는 것을 깨달았다.
자바스크립트 소수점 표기 는 항상 정확하지 않다.
그 이유는 자바스크립트에서의 수는 항상 64비트 floating point 이기 때문! 즉 정확하게 표기할 수 있는 수가 한계가 있다는 말이다.
정수는 15자리까지 정확하게 표기할 수 있다고 한다.
그러면 소수는? 반드시 정확하지는 않다고 한다.
실제로 0.1 + 0.2 가 0.3이 아닌 0.30000000000000004 임을 확인할 수 있었다.
어라...? 그러면 코드를 짤 때는 어떻게 짜야하지?
10을 곱해서 정수로 바꿔주고 다시 나눠주면 된다!
자바스크립트라는 언어는 굉장히 심오하고 재미있는 언어라는 것을 다시 한 번 깨달았다.
자바스크립트에서의 자료형에 대해 다시 한 번 살펴볼 수 있는 기회가 되었다.
다음에는 또 실수하지 말고, 소수점 계산을 할 때는 조심해야지!