¿Cómo es el tipo de punto flotante en JS?
Por ejemplo: var a = 0.69;
Quiero obtener 6.9 directamente para escribir var c = a*10;
alerta (c);
Cuando busca en línea, algunos internautas dijeron que este es un error de cálculo de punto flotante JS y encontraron una solución:
Método 1: función personalizada JS
Copiar código del código de la siguiente manera:
<script>
// Agregar método para obtener resultados adicionales precisos
// Descripción: Los resultados de JavaScript tendrán un error, y será más obvio cuando se agregan los dos números de punto flotante. Esta función devuelve un resultado más preciso de la adición.
// Llamar: Accidd (Arg1, Arg2)
// Valor de retorno: Arg1 más los resultados precisos de Arg2
Función acadd (arg1, arg2) {{
var r1, r2, m;
intente {r1 = arg1.ToString ().
intente {r2 = arg2.toString ().
M = Math.Pow (10, Math.max (R1, R2)))
Return (arg1*m+arg2*m)/m
}
// Agregar un método Agregar al tipo de número, que es más conveniente para llamar.
Número.prototype.add = function (arg) {
Regresar acadd (arg, esto);
}
// Agregar método para obtener resultados adicionales precisos
// Descripción: Los resultados de JavaScript tendrán un error, y será más obvio cuando se agregan los dos números de punto flotante. Esta función devuelve un resultado más preciso de la adición.
// Llamar: Accidd (Arg1, Arg2)
// Valor de retorno: Arg1 más los resultados precisos de Arg2
Function acsub (arg1, arg2) {{
var r1, r2, m, n;
intente {r1 = arg1.ToString ().
intente {r2 = arg2.toString ().
m = Math.Pow (10, Math.max (R1, R2));
// Última modificación de Deeka
// Longitud de precisión de control dinámico
n = (r1> = r2)?
Return ((arg1*m-rg2*m)/m) .tofixed (n);
}
// excepto el método para obtener el método preciso para eliminar el método
// Descripción: Los resultados de JavaScript tendrán un error, y será obvio cuando se eliminen los dos números de punto flotante. Esta función devuelve un resultado de eliminación más preciso.
// Llamar: Accdiv (Arg1, Arg2)
// Valor de retorno: Arg1 excepto los resultados precisos de Arg2
Función accDiv (arg1, arg2) {{
var t1 = 0, t2 = 0, r1, r2;
Prueba {t1 = arg1.ToString ().
intente {t2 = arg2.toString ().
con (matemáticas) {
R1 = número (arg1.ToString (). Reemplazar (".", ""))
r2 = número (arg2.ToString (). reemplazar (".", ""))
Return (r1/r2)*pow (10, t2-t1);
}
}
// Agregue un método Div al tipo de número, que es más conveniente de llamar.
Número.prototype.div = function (arg) {
Devolver accdiv (this, arg);
}
// función de multiplicación para obtener resultados de multiplicación precisos
// Descripción: Los resultados de los resultados de multiplicación de JavaScript tendrán un error, y será obvio cuando se multiplicen los dos números de punto flotante. Esta función devuelve un resultado de multiplicación más preciso.
// Llamar: Accmul (Arg1, Arg2)
// Valor de retorno: Arg1 se multiplica por los resultados precisos de Arg2
Función Accmul (Arg1, Arg2)
{{
Varm m = 0, s1 = arg1.ToString (), s2 = arg2.ToString ();
Intente {m+= s1.split (".") [1] .length} catch (e) {}
Prueba {m+= s2.split (".") [1] .length} catch (e) {}
Número de retorno (S1.replace (".", "")*Número (S2.replace (".", "") /Math.Pow (10, M)
}
// Agregar un método MUL al tipo de número, que es más conveniente de llamar.
Número.prototype.mul = function (arg) {
Devolver accmul (arg, esto);
}
var a = 0.69;
var b = 10;
alerta (a*b);
alerta ((a*100)/10);
</script>
Simplemente llame a la función directamente.
Método 2: Si conoce el número de dígitos decimales, puede considerar aburrir el número de números de punto flotante al número entero (finalmente divide el múltiplo correspondiente) y luego realizar la operación de operación.
Alerta (11*22.9);
Alerta (11*(22.9*10)/10);