En JavaScript, cuando usa decimales para realizar operaciones de suma, resta, multiplicación y división, encontrará que el resultado obtenido a veces es seguido de una decimal larga, lo que hace que la operación complice y afecta los resultados del cálculo. Busqué en Internet las razones, que son más o menos de la siguiente manera: en JavaScript, muchos decimales siempre aparecerán cuando las operaciones de datos con decimales. Esto se debe a que en JavaScript, los números de puntos flotantes se calculan en 2 dígitos.
La copia del código es la siguiente:
/**
* Operación de adición para evitar números de múltiples dígitos y pérdidas de precisión de cálculo después de agregar puntos decimales a los datos.
*
* @param num1 Agregar número 1 | num2 Agregar número 2
*/
función numadd (num1, num2) {
var basenum, basenum1, basenum2;
intentar {
basenum1 = num1.ToString (). Split (".") [1] .length;
} catch (e) {
basenum1 = 0;
}
intentar {
basenum2 = num2.ToString (). Split (".") [1] .length;
} catch (e) {
basenum2 = 0;
}
Basenum = Math.Pow (10, Math.max (Basenum1, Basenum2));
return (num1 * basenum + num2 * basenum) / basenum;
};
/**
* Operación de adición para evitar números de múltiples dígitos y pérdidas de precisión de cálculo después de disminuir la fase de datos.
*
* @param num1 se resta | num2 se resta
*/
función numsub (num1, num2) {
var basenum, basenum1, basenum2;
Var precisión; // precisión
intentar {
basenum1 = num1.ToString (). Split (".") [1] .length;
} catch (e) {
basenum1 = 0;
}
intentar {
basenum2 = num2.ToString (). Split (".") [1] .length;
} catch (e) {
basenum2 = 0;
}
Basenum = Math.Pow (10, Math.max (Basenum1, Basenum2));
Precision = (Basenum1> = Basenum2)? Basenum1: Basenum2;
return ((num1 * basenum - num2 * basenum) / basenum) .tofixed (precisión);
};
/**
* Operación de multiplicación para evitar números de múltiples dígitos y pérdidas de precisión de cálculo después de multiplicar datos por puntos decimales.
*
* @param num1 multiplicador | multiplicador num2
*/
función numMulti (num1, num2) {
var basenum = 0;
intentar {
basenum += num1.ToString (). Split (".") [1] .length;
} catch (e) {
}
intentar {
basenum += num2.ToString (). Split (".") [1] .length;
} catch (e) {
}
número de retorno (num1.ToString (). reemplazar (".", "")) * Número (num2.ToString (). reemplazar (".", "")) / math.pow (10, basenum);
};
/**
* Operación de división para evitar números de múltiples dígitos y pérdidas de precisión de cálculo después de dividir el punto decimal de los datos.
*
* @param num1 dividendo | dividendo num2
*/
función numDiv (num1, num2) {
var basenum1 = 0, basenum2 = 0;
var basenum3, basenum4;
intentar {
basenum1 = num1.ToString (). Split (".") [1] .length;
} catch (e) {
basenum1 = 0;
}
intentar {
basenum2 = num2.ToString (). Split (".") [1] .length;
} catch (e) {
basenum2 = 0;
}
con (matemáticas) {
basenum3 = número (num1.ToString (). reemplazar (".", ""));
basenum4 = número (num2.ToString (). reemplazar (".", ""));
return (Basenum3 / Basenum4) * Pow (10, Basenum2 - Basenum1);
}
};