Primero escriba una demostración para reproducir el problema. Estoy usando un entorno de prueba en línea de JS [abierto]
Reescribir la función Displaynum ()
función displaynum () {var num = 22.77; alerta (num + 10);}Haga clic en los resultados del botón Show Show 32.76999999999996 N aparecen decimales.
No todos los números tendrán este fenómeno, excepto por 22.99 2.777, parece que estos números no son especiales.
Revisé algo de información. Uno es el error en el cálculo del punto flotante JS, y el otro está relacionado con la conversión final de la computadora a cálculo binario. Sin embargo, ¿por qué no todos los decimales tienen este fenómeno? No lo sé en este momento. Me profundizaré si tengo tiempo.
Hay dos soluciones ahora. El primero es usar el método js .tofixed (n) para obtener directamente decimales N-dígitos. Personalmente, creo que este método tendrá algunos problemas en la precisión de los datos. Si los requisitos de precisión de los datos no son altos, puede usarlo. El segundo método es escribir su propio método de operación JS.
La siguiente es una función de adición personalizada. Agregar este método evitará los problemas anteriores.
función addnum (num1, num2) {var sq1, sq2, m; try {sq1 = num1.ToString (). Split (".") [1] .length;} catch (e) {sq1 = 0;} try {sq2 = num2.tostring (). Split (".") [1] .length;} Catch (e) {sq2 = 0;} m = math.pow (10, math.max (sq1, sq2)); return (num1 * m + num2 * m) / m;}Por supuesto, también se puede escribir como alerta ((num * 3+10 * 3) /3); De esta manera, no habrá más decimales en n.
alerta ((num * 3+10 * 3) /3); y alerta (num+10); son diferentes de la alerta (num+10); Estas dos formas de escribir computadoras para convertir a operaciones binarias en la capa inferior. Quizás esta es la razón de los problemas anteriores.
El artículo anterior sobre JS Decimal que calcula el punto decimal y muestra múltiples decimales es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.