매우 크거나 작은 숫자의 경우 과학 표기법을 사용하여 부동 소수점 값을 나타낼 수 있습니다. 과학 표기법을 사용하여 숫자는 숫자 + E/E로 표시되고 다음과 같은 10의 배수로 표시 될 수 있습니다.
코드 사본은 다음과 같습니다.
var num1 = 3.125e7; // 31250000 var num2 = 3e-17; // 0.000000000000000000000000000000000000003
특히 많은 숫자를 추가하거나 빼기 위해 문자열 + 과학 표기법을 사용하여 다음과 같은 방법을 수행 할 수 있습니다.
코드 사본은 다음과 같습니다.
// 큰 정수 만 고려하고 소수 함수 stradd (snum1, snum2)를 고려하지 마십시오.
/*가장 높은 숫자가 추가 인 경우를 기록하기 위해 숫자를 추가하십시오*/
var snum1 = [ '0', snum1] .join ( ''), snum2 = [ '0', snum2] .join ( '');
/*짧은 숫자 문자열에 0을 추가*/
var len1 = snum1.length, len2 = snum2.length,
Zeroarr = function (len) {
var arr = new Array (Len), i = len;
while (i-) {arr [i] = 0;}
반환 ARR;
};
if (len1> len2) {
var arrtemp = Zeroarr (len1 -len2);
arrtemp.push (snum2),
snum2 = arrtemp.join ( '');
}
else if (len2> len1) {
var arrtemp = Zeroarr (len2 -len1);
arrtemp.push (snum1),
snum1 = arrtemp.join ( '');
}
/*문자열을 배열로 변환하고 해당 숫자로 추가*/
var arr1 = snum1.split ( ''), arr2 = snum2.split ( '');
var arraddres = 새 배열 (arr1.length), i = arr1.length;
var andone = 0, // 하부 첨가물이 cur1, cur2, curadd인지 여부;
while (i-) {
cur1 = +arr1 [i], cur2 = +arr2 [i];
curadd = cur1+cur2+andone;
if (10> curadd)
arraddres [i] = curadd,
andone = 0;
또 다른
arraddres [i] = +curadd.tostring (). 슬라이스 (1,2),
andone = 1;
}
if (! andone) {// 마지막으로 한 걸음 더 나아갈 지 여부, 그렇지 않으면 이전 0 arraddres.splice (0,1);
}
/*배열에 처음 19 자리 숫자가있는 경우 과학 표기법을 사용하여 결과를 나타냅니다*/
var keeplen = 19; // JS의 소수점은 10 진수 지점 var eafter = arraddres.length -1 이후 18 자리 만 유지합니다. // e var ebefore, ebeforest = ''이후의 여러 부분. // e 이전의 소수 부분 부분
if (keeplen <arraddres.length)
ebeforest = [arraddres [0], '.', arraddres.slice (1, keeplen) .join ( '')]. join ( '');
또 다른
ebeforest = [arraddres [0], '.', arraddres.slice (1) .join ( '')]. join ( '');
ebefore = +ebeforest;
반환 [번호 (arraddres.join ( '')), ebefore, eafter];
}
stradd ( '1234567890', '9876543210'); //-> [1111111100, 1.111111111, 9]
코드는 위와 같습니다. 매우 간단하지 않습니까?