2013-03-07 4 views
0

22 자 길이의 정수를 검증해야합니다. 나는 신성 할 필요가 있고 나쁜 점을 얻는 것이 중요하다. 하지만, 내가 함수에 보낼 때, 함수는이 7.04406000774059e를 얻을 수 + 21Jquery, 높은 숫자를 사용하는 방법

labas = modulo(7044060007740589212932, 97); 
function modulo (divident, divisor){ 
alert(divident); 
} 
+0

큰 숫자는 자바 스크립트가 처리하지 않습니다 [이 스레드를 참조하십시오] (http://stackoverflow.com/a/307200/1986499) – Imperative

답변

0

난 당신이 분할 ("신"되지 않음) 나머지 (안 "나쁜 부분")을 의미 생각합니다.
난 재미있는 주사위를 굴려 임의의 숫자 (8233)를 얻었습니다.이 예제는 몇 가지 예제로 사용합니다. 당신이 (9)에 의해 8233을 나눌 때
* 당신이 (8)에 의해 8233 분할, 나머지는 * 1. 8233 = (8 * 1029) + 1
이며, 나머지는 10로 8233을 나눌 때 * 7 8233 = (9 * 914) + 7
이며, 나머지는 3 8233 = (10 * 823) + 3
입니다
자바 스크립트의 숫자를 다루는, 당신은 첫 번째 다섯 개 또는 16 자리가 좋은 것을 기억해야합니다 당신이 (11)에 의해 8233을 나눌 때 *, 나머지 5 8233 = (11 * 748) + 5

가 귀하의 질문에 대답하는 것입니다. 숫자에 숫자가 더 많으면 일반적으로 결과가 정확하지 않습니다.
예제는이 숫자를 사용합니다. 7044060007740589212932 JavaScript는 해당 번호를 정확하게 처리 할 수 ​​없습니다. 가장 좋은 방법은 7044060007740589735936이며 523004이 너무 높습니다. 하지만 7044060007740589735936을 원하지 않으실 경우 7044060007740589212932을 원하십니까?
해결 방법 :
숫자가 아닌 문자열으로 숫자를 유지하십시오.
"7044060007740589212932"
그런 다음 문자열을 중간 부분의 두 부분으로 분리합니다.
"70440600077""40589212932"
이제 11 개의 숫자가 포함 된 두 개의 문자열이 있습니다.
다음이 수행
(36 + "40589212932") 당신에게 문자열 "3640589212932"
(A 번호를 가져옵니다
parseInt("70440600077", 10) 당신에게 70440600077
(70440600077 % 97) 당신에게 수를 얻을 수를 가져옵니다 (97 * 726191753) + 36 = 70440600077
는 그 다음 36을이 할
공지 것을 36 더하기 문자열은 문자열 연결을 수행합니다.) parseInt("3640589212932", 10)은 숫자 3640589212932을 가져옵니다. (3640589212932 % 97)은 숫자를 가져옵니다. 최종 결과물 인. 정확히 97 * 37531847556 = 3640589212932입니다.

72619175300000000000 * 97 = 7044060004100000000000 
     37531847556 * 97 =   3640589212932 
====================   ====================== 
72619175337531847556 * 97 = 7044060007740589212932 

그리고 거기에 있습니다.

관련 문제