Comment est le type de point flottant en JS?
Par exemple: var a = 0,69;
Je veux obtenir 6.9 directement pour écrire var c = a * 10;
alerte (c); le résultat est: 6.89999999999995
Lorsque vous recherchez en ligne, certains internautes ont déclaré qu'il s'agissait d'un bogue de calcul flottant JS et a trouvé une solution:
Méthode 1: Fonction personnalisée JS
Copier le code du code comme suit:
<cript>
// Ajouter une méthode pour obtenir des résultats supplémentaires précis
// Description: Les résultats de JavaScript auront une erreur, et ce sera plus évident lorsque les deux nombres flottants sont ajoutés. Cette fonction renvoie un résultat plus précis de l'addition.
// Appel: acnidd (arg1, arg2)
// Valeur de retour: arg1 plus les résultats précis de l'ARG2
Fonction acadd (arg1, arg2) {{
var r1, r2, m;
essayez {r1 = arg1.toString ().
essayez {r2 = arg2.tostring ().
m = math.pow (10, math.max (r1, r2))))
Retour (arg1 * m + arg2 * m) / m
}
// Ajouter une méthode ADD au type de nombre, qui est plus pratique à appeler.
Nombre.prototype.add = fonction (arg) {
Retour acadd (arg, ceci);
}
// Ajouter une méthode pour obtenir des résultats supplémentaires précis
// Description: Les résultats de JavaScript auront une erreur, et ce sera plus évident lorsque les deux nombres flottants sont ajoutés. Cette fonction renvoie un résultat plus précis de l'addition.
// Appel: acnidd (arg1, arg2)
// Valeur de retour: arg1 plus les résultats précis de l'ARG2
Fonction AccSub (Arg1, Arg2) {{{
var r1, r2, m, n;
essayez {r1 = arg1.toString ().
essayez {r2 = arg2.tostring ().
m = math.pow (10, math.max (r1, r2));
// Dernière modification de Deeka
// longueur de précision de contrôle dynamique
n = (r1> = r2)?
Return ((arg1 * m-rg2 * m) / m) .tofixed (n);
}
// sauf la méthode pour obtenir la méthode précise pour supprimer la méthode
// Description: Les résultats de JavaScript auront une erreur, et il sera évident lorsque les deux nombres de points flottants seront supprimés. Cette fonction renvoie un résultat de suppression plus précis.
// Appel: AccDiv (Arg1, Arg2)
// Valeur de retour: arg1 sauf les résultats précis de l'ARG2
Fonction accdiv (arg1, arg2) {{
var t1 = 0, t2 = 0, r1, r2;
essayez {t1 = arg1.toString ().
essayez {t2 = arg2.tostring ().
avec (math) {
R1 = nombre (arg1.toString (). Remplacer (".", ""))
r2 = nombre (arg2.ToString (). Remplacer (".", ""))
Return (r1 / r2) * pow (10, t2-t1);
}
}
// Ajoutez une méthode div au type de nombre, ce qui est plus pratique à appeler.
Nombre.prototype.div = fonction (arg) {
Retourner accdiv (ceci, arg);
}
// Fonction de multiplication pour obtenir des résultats de multiplication précis
// Description: Les résultats des résultats de la multiplication JavaScript auront une erreur, et il sera évident lorsque les deux nombres de points flottants seront multipliés. Cette fonction renvoie un résultat de multiplication plus précis.
// Appel: Accmul (Arg1, Arg2)
// Valeur de retour: Arg1 est multiplié par les résultats précis d'Arg2
Fonction accmul (arg1, arg2)
{{
varm m = 0, s1 = arg1.toString (), s2 = arg2.ToString ();
Try {m + = s1.split (".") [1] .length} catch (e) {}
Essayez {m + = s2.split (".") [1] .length} catch (e) {}
Numéro de retour (s1.replace (".", "") * Numéro (s2.replace (".", "") /Math.pow (10, m)
}
// Ajoutez une méthode MUL au type de nombre, ce qui est plus pratique à appeler.
Nombre.prototype.mul = fonction (arg) {
Retour accmul (arg, this);
}
var a = 0,69;
var b = 10;
alerte (a * b);
alerte ((a * 100) / 10);
</cript>
Appelez simplement la fonction directement.
Méthode 2: Si vous connaissez le nombre de chiffres décimaux, vous pouvez envisager de forcer le nombre de nombres flottants à l'entier (divisez enfin le multiple correspondant), puis effectuer l'opération de fonctionnement.
Alerte (11 * 22,9);
Alerte (11 * (22,9 * 10) / 10);