J'ai la variable suivante:

var result = 30.03692740;

Je souhaite supprimer 0 après ., afin que le résultat final soit:

30.3692740

Comment faire ça?

J'ai essayé:

result = result.replace('.0' , '.');

Mais ça ne marche pas.

-3
user9643639 16 avril 2018 à 07:17

3 réponses

Meilleure réponse

replace fonctionne avec des cordes. Vous devez convertir le nombre en chaîne pour effectuer cette opération:

var result = 30.03692740;
result = result.toString();
result = result.replace('.0', '.');
result = parseFloat(result);
console.log(result);
4
31piy 16 avril 2018 à 04:19

Comme d'autres l'ont souligné, replace() fonctionne avec des chaînes, vous devez donc d'abord convertir le nombre en chaîne. Utiliser .toString() pour effectuer la conversion est le moyen le plus clair, mais si les performances sont critiques, alors c'est plus rapide:

result = (result + "").replace('.0' , '.');

Alternativement, vous pouvez utiliser les mathématiques au lieu de convertir en chaîne. Séparez d'abord les parties décimales et intégrales, multipliez la partie décimale par 10 pour supprimer le premier zéro, puis ajoutez à nouveau les deux parties ensemble. Le seul problème avec cette approche est que vous rencontrez la précision des nombres flottants. Habituellement, c'est bien et peut être ignoré, mais si c'est un problème, il peut être résolu avec .toFixed():

var result = 30.03692740;
result = parseInt(result) + (result % 1 * 10);
console.log(result);
console.log(result.toFixed(6));
0
Racil Hilan 16 avril 2018 à 05:28

Pardonnez ma curiosité, mais pourquoi voulez-vous faire ça?

La réponse est:

var result = 30.03692740; 
result = result.toString().replace('.0' , '.');
0
Doruk 16 avril 2018 à 05:19