2017-10-04 9 views
2

코드 워드에서 문제 중 하나를 해결하려고합니다. 문제는 다음과 같습니다 :자바 스크립트에서 큰 숫자를 표시 할 때의 문제

:

수학에서

, 피보나치 숫자가 모든 수는 앞의 두 사람의 합 즉, 다음과 같은 정수 순서에있는 피보나치 시퀀스를 불러 사실을 특징으로

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 피보나치 시퀀스의 n 위치에있는 number의 문자열 표현을 반환하는 함수 getFibonacci (n) .

코드를 만들었지 만 테스트 된 숫자가 작고 많은 수의 코드가 포함되어 있고 "예상 : '30010821454963453907530667147829489881'과 같은 오류 메시지가 표시되면 모든 테스트가 실패한 경우에만 내 코드가 테스트를 통과 할 수 있습니다. 3.001082145496346e + 37 ' ". 또한 toNotExponential() 또는 expandExponential()을 반환 문 끝 부분에 추가하여 전체 숫자를 표시하려고했지만 코드 중 하나가 "toNotExponential() is not a function "또는"expandExponential()이 함수가 아닙니다. " 어떻게해야할지 모르겠다. 제발 도와주세요. 다음과 같이 내 코드 ...

function getFibonacci(n) { 
    var arr= [1,1]; 
    var len = arr.length; 
    while(len<n){ 
    arr.push(arr[len-1]+arr[len-2]); 
    len++; 
    } 
    return (arr[len-1]+"").toNotExponential(); 
    } 
+0

[이 질문에]보십시오 (https://stackoverflow.com/questions/1685680/how-to-avoid-scientific-notation-for-large-numbers-in-javascript) – lztachyon

+0

[ * Number.MAX_SAFE_INTEGER *] (http://ecma-international.org/ecma-262/8.0/#sec-number.max_safe_integer) '9007199254740991' 라이브러리를 사용하거나 직접 작성해야합니다. 제안 사항은 [* Javascript summing large integers *] (https://stackoverflow.com/questions/4557509/javascript-summing-large-integers)를 참조하십시오. BTW, javascript에는 int 타입이 없으며 숫자 만 있습니다. – RobG

+0

숫자를 문자열로 저장할 수 있으며 수천을 구분 기호로 사용할 수 있습니다. 여기서 길이는 E- 표기법을 사용하지 않고 문자열의 가능한 최대'.length'에 의해 결정됩니다. [1을 어떻게 추가합니까? JavaScript에서 문자열로 표시된 큰 정수로?] (https://stackoverflow.com/questions/43614407/how-do-i-add-1-to-a-big-integer-represented-as-a-string -in-javascript /) – guest271314

답변

0

당신은 수학적 절차를 수행하려면 문자열로 주어진 수의 부분의 합을 사용할 수 있습니다. 문자열의 숫자 인 .length3보다 큰 숫자의 각 세 자리는 1에서 999까지를 추가하면 수천으로 간주되어 1000이됩니다. N1000에 더하면 N1000 일 경우 2000이된다고 말할 수 있습니다. 따라서 문자열의 인덱스를 사용하여 문자열 내에서 반복되는 정확한 수천을 결정하고 3의 그룹을 선택하여 3의 인접한 집합 내의 하나 이상의 숫자를 다시 계산해야하고 E-notation없이 숫자로 표시 할 수 있습니다 . How do I add 1 to a big integer represented as a string in JavaScript?을 참조하십시오.