abc0135   3년 전

78번 수열까지는 정상적으로 값이 구해지는데 79부터 값이 조금씩 틀어집니다.

아래 코드를 사용해서 77번 수열과 78번 수열을 구한 후 계산기로 더해봤을 때는 정상적인 79번 수열 값(14,472,334,024,676,221‬)이 나오는데, 프로그램에서 79번 수열을 바로 구하거나, 77번 수열과 78번 수열을 더하는 코드를 짜봐도 계산기로 더한 값과는 다른 값(14,472,334,024,676,220)이 나오네요... 어떤 부분이 잘못된 걸까요 ㅠㅠ

eve8108   3년 전

정확히는 모르겠습니다만, 도움이 됐으면 해서 답변 드립니다.

javascript가 나타낼 수 있는 숫자의 최대범위는 9,007,199,254,740,991라고 나옵니다.

그 범위를 넘어가서 제대로 된 값이 나오지 않는 것 같습니다.

구글에서 찾아본 블로그 공유해드리겠습니다.

https://medium.com/@pks2974/javascript-%EC%99%80-number-%EC%88%AB%EC%9E%90-1e6cbfbbe312

abc0135   3년 전

앗... 최대 범위가 9,007,199,254,740,991였군요..! 감사합니다!

저도 js에서 나타낼 수 있는 숫자 최대 범위가 문제일까 싶어서 찾아봤는데 

1.7976931348623157e+308 = (2 ^ 1024 - 1)

179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

라는 값이 나와서ㅠㅠ.... 

그러면 js에서는 이 문제를 어떻게 해결해야 할까요 ...?

abc0135   3년 전

BigInt을 사용해서 계산하면 값이 정상으로 나오지만 끝에 n이 붙어서인지 틀렸다고 나와서 String으로 변환하고 출력을 해봤는데 n은 없어졌지만 그래도 틀렸다고 나오네요.. ㅠㅠ 코드 자체가 잘못된걸까요 음 ㅠㅠ...

댓글을 작성하려면 로그인해야 합니다.