Para números muy grandes o muy pequeños, la notación científica se puede usar para representar valores de puntos flotantes. Usando notación científica, un número puede representarse como un número más E/E, seguido de un múltiplo de 10, como:
La copia del código es la siguiente:
var num1 = 3.125e7; // 31250000 var num2 = 3e-17; // 0.0000000000000000000000000000000000000000003
Para sumar o restar números particularmente grandes, puede usar métodos de notación científicos String + para realizar el método, como:
La copia del código es la siguiente:
// Solo considere enteros grandes, y no considere la función decimal Stradd (Snum1, Snum2) {
/*Agregue un dígito para registrar el caso donde el dígito más alto está más allá*/
var snum1 = ['0', snum1] .Join (''), snum2 = ['0', snum2] .Join ('');
/*Agregar 0 a cadenas numéricas cortas*/
var len1 = snum1.length, len2 = snum2.length,
Zeroarr = function (len) {
var arr = new Array (len), i = len;
while (i-) {arr [i] = 0;}
regresar 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 ('');
}
/*Convertir cadenas a matrices y agrégalas con dígitos correspondientes*/
var arr1 = snum1.split (''), arr2 = snum2.split ('');
var arraddres = nueva matriz (arr1.length), i = arr1.length;
var andone = 0, // si la adición de la parte inferior es CUR1, CUR2, CURADD;
mientras (i-) {
cur1 = +arr1 [i], cur2 = +arr2 [i];
curadd = cur1+cur2+andone;
if (10> curadd)
Arraddres [i] = Curadd,
Andone = 0;
demás
Arraddres [i] = +Curadd.ToString (). Slice (1,2),
Andone = 1;
}
if (! Andone) {// Finalmente, si ir un paso más allá, de lo contrario intercepta los 0 Arraddres anteriores (0,1);
}
/*Si hay los primeros 19 dígitos en la matriz, use la notación científica para representar el resultado*/
var Keeplen = 19; // El decimal de JS solo conserva los 18 dígitos después del punto decimal var eafter = arraddres.length - 1; // la parte múltiple después de e variar, eBeforStr = ''; // la parte decimal antes de e
if (Keeplen <Arraddres.length)
eBeforStr = [Arraddres [0], '.', Arraddres.slice (1, Keeplen) .Join ('')]. Join ('');
demás
eBeforStry = [Arraddres [0], '.', Arraddres.slice (1) .Join ('')]. Join ('');
eBore = +eborestr;
return [number (Arraddres.Join ('')), eBore, eafter];
}
Stradd ('1234567890', '9876543210'); // -> [1111111100, 1.11111111, 9]
El código es el anterior, ¿no es muy simple?