js algoritmo_realiza la suma de dos números grandes

Cuando hay dos números enteros a y b, en el caso habitual tenemos el operador "+" para sumarlos:

let sum = a + b;

Pero JS tiene un rango seguro al almacenar números enteros ; una vez que el número excede este rango, perderá precisión.

No podemos ejecutar números con pérdida de precisión, porque el resultado de la operación también pierde precisión.

Por lo tanto, ¡tenemos que usar cadenas para representar datos! (sin pérdida de precisión)

El rango máximo seguro de números enteros en JS se puede encontrar: 9007199254740991

Si queremos realizar 9007199254740991 + 1234567899999999999

Primero debemos preparar dos variables de cadena y un método:

let a = "9007199254740991";
let b = "1234567899999999999";

function add(a ,b){
   //...
}

Luego alinee las longitudes de las cuerdas:

let a = "9007199254740991";
let b = "1234567899999999999";

function add(a ,b){
   //取两个数字的最大长度
   let maxLength = Math.max(a.length, b.length);
   //用0去补齐长度
   a = a.padStart(maxLength , 0);//"0009007199254740991"
   b = b.padStart(maxLength , 0);//"1234567899999999999"
}

Luego agregue desde el lugar de las unidades:

let a = "9007199254740991";
let b = "1234567899999999999";

function add(a ,b){
   //取两个数字的最大长度
   let maxLength = Math.max(a.length, b.length);
   //用0去补齐长度
   a = a.padStart(maxLength , 0);//"0009007199254740991"
   b = b.padStart(maxLength , 0);//"1234567899999999999"
   //定义加法过程中需要用到的变量
   let t = 0;
   let f = 0;   //"进位"
   let sum = "";
   for(let i=maxLength-1 ; i>=0 ; i--){
      t = parseInt(a[i]) + parseInt(b[i]) + f;
      f = Math.floor(t/10);
      sum = t%10 + sum;
   }
   if(f == 1){
      sum = "1" + sum;
   }
   return sum;
}

correr:

add(a ,b); //结果为:1243575099254740990

Supongo que te gusta

Origin blog.csdn.net/qq_41916378/article/details/117513270
Recomendado
Clasificación