Pour des nombres très grands ou très petits, une notation scientifique peut être utilisée pour représenter les valeurs des points flottants. En utilisant la notation scientifique, un nombre peut être représenté comme un nombre plus E / E, suivi d'un multiple de 10, tel que:
La copie de code est la suivante:
var num1 = 3.125e7; // 31250000 var num2 = 3e-17; // 0,00000000000000000000000000000000000000003
Pour ajouter ou soustraire des nombres particulièrement grands, vous pouvez utiliser des méthodes de notation STRING + Scientific pour effectuer la méthode, telle que:
La copie de code est la suivante:
// ne considérez que de grands entiers et ne considérez pas la fonction décimale à l'étranger (SNUM1, SNUM2) {
/ * Ajouter un chiffre pour enregistrer le cas où le chiffre le plus élevé est plus loin * /
var snum1 = ['0', snum1] .join (''), snum2 = ['0', snum2] .join ('');
/ * Ajouter 0 aux chaînes numériques courtes * /
var len1 = snum1.length, len2 = snum2.length,
zéroarr = fonction (len) {
var arr = nouveau tableau (len), i = len;
tandis que (i -) {arr [i] = 0;}
retour arr;
};
if (len1> len2) {
var Artremp = zeroarr (Len1 - Len2);
Artremp.push (SNUM2),
SNUM2 = Artremp.Join ('');
}
else if (len2> len1) {
var artremp = zeroarr (Len2 - Len1);
Artremp.push (SNUM1),
SNUM1 = Artremp.Join ('');
}
/ * Convertissez les chaînes en tableaux et ajoutez-les avec des chiffres correspondants * /
var arr1 = snum1.split (''), arr2 = snum2.split ('');
var arraddres = nouveau tableau (arr1.length), i = arr1.length;
var andone = 0, // si l'ajout de partie inférieure est Cur1, Cur2, Curadd;
tandis que (i -) {
cur1 = + arr1 [i], cur2 = + arr2 [i];
curadd = cur1 + cur2 + andone;
if (10> Curadd)
Arraddre [i] = Curadd,
etone = 0;
autre
arraddre [i] = + curadd.toString (). Slice (1,2),
etone = 1;
}
if (! andone) {// Enfin, s'il faut aller plus loin, sinon intercepter les 0 Arraddre.splice précédents (0,1);
}
/ * S'il y a les 19 premiers chiffres dans le tableau, utilisez la notation scientifique pour représenter le résultat * /
var keeplen = 19; // La décimale de JS ne conserve les 18 chiffres qu'après le point décimal var eafter = Arraddre.Length - 1; // la partie multiple après e var ebefore, ebeForest = ''; // la partie décimale avant e
if (keeplen <arraddre.length)
eBeforestr = [Arraddre [0], '.', Arraddre.slice (1, keeplen) .join ('')]. join ('');
autre
eBeforestr = [Arraddre [0], '.', Arraddre.slice (1) .join ('')]. JOIN ('');
ebefore = + ebeForest;
return [nombre (arraddre.join ('')), ebefore, eafter];
}
Stradd ('1234567890', '9876543210'); // -> [1111111100, 1.11111111, 9]
Le code est comme ci-dessus, n'est-ce pas très simple?