Для очень больших или очень маленьких чисел научная нотация может использоваться для представления значений с плавающей запятой. Используя научные обозначения, число может быть представлено в виде числа плюс E/E, за которым следует множество 10, таких как:
Кода -копия выглядит следующим образом:
var num1 = 3.125e7; // 31250000 var num2 = 3e-17; // 0,00000000000000000000000000000000000000003
Чтобы добавить или вычесть особенно большие числа, вы можете использовать методы String + Scientific обозначения для выполнения метода, например:
Кода -копия выглядит следующим образом:
// рассматривать только большие целые числа и не рассматривать десятичную функцию 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 ('' ');
}
иначе if (len2> len1) {
var arrtemp = zeroarr (len2 - len1);
arrtemp.push (snum1),
snum1 = arrtemp.join ('' ');
}
/*Конвертировать строки в массивы и добавить их с соответствующими цифрами*/
var arr1 = snum1.split (''), arr2 = snum2.split ('');
var arraddres = new Array (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 (). Slice (1,2),
andone = 1;
}
if (! Andone) {// Наконец, идти на один шаг дальше, в противном случае перехватить предыдущие 0 arraddres.splice (0,1);
}
/*Если в массиве есть первые 19 цифр, используйте научные обозначения, чтобы представить результат*/
var geathlen = 19; // Десятичный десятичный js сохраняет 18 -значные только после десятичной точки var eafter = arraddres.length - 1; // множественная часть после e vore, прежде, ebeforeStrest = ''; // десятичная часть перед е
if (geathlen <arraddres.length)
ebeForeStrest = [arraddres [0], '.', arraddres.slice (1, hepelen) .join ('' ')]. join (' ');
еще
ebeForeStR = [arraddres [0], '.', arraddres.slice (1) .join ('')]. Join ('');
ebefore = +ebeForeSt;
return [number (arraddres.join ('')), efefore, eafter];
}
Stradd ('1234567890', '9876543210'); // -> [1111111100, 1.11111111, 9]
Код, как и выше, разве это не очень просто?