2017-10-15 12 views
-1

J'ai cherché et seulement trouvé celui-ci lié à ma question, mais pas exactement la même chose que j'utilise pour Fixer plutôt que pour Précision. Why does toPrecision return a String?Pourquoi parseFloat en javascript renvoie le type de chaîne pour moi?

Voici mon code

var oldv = parseFloat(document.getElementById('total').textContent).toFixed(2); 
alert(typeof oldv); // returns string 
var testv = parseInt(document.getElementById('total').textContent); 
alert(typeof testv); // returns number 

J'ai besoin d'autres étapes de mathématiques, de sorte que le type de chaîne foiré ... Pourquoi? Comment résoudre? TIA

+5

[ 'toFixed'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) et ['toPrecision'] (https://developer.mozilla.org/fr-FR/ docs/Web/JavaScript/Référence/Global_Objects/Number/toPrecision) retournent toutes deux des chaînes. S'il vous plaît lire la documentation. _ "Comment résoudre?" _ - dépend de votre objectif. – Xufox

Répondre

3

Comme mentionné dans docs, toFixed retours

chaîne représentant le nombre donné en utilisant la notation à virgule fixe

Si vous avez besoin d'utiliser le résultat retourné comme un numéro, vous pouvez utiliser objet intégré Number:

var oldv = parseFloat(Math.PI).toFixed(2); 
 

 
console.log(oldv); 
 
console.log(typeof oldv); // returns string 
 

 
var num = Number(oldv); 
 
console.log(num); 
 
console.log(typeof num); // returns number

+1

Merci. Cela marche. –

+0

Ceci est un comportement confus pour moi, 'toFixed' devrait retourner un' Number'. – Taurus

2

La fonction Number.prototype.toFixed() est supposée renvoyer un type de chaîne conformément à la documentation found here.

Si vous devez effectuer d'autres arithmétique avec le numéro, vous pouvez forcer le remettre en forme numérique en utilisant l'opérateur plus unaire avant le nom de la variable (+) documenté here comme ceci:

var oldv = parseFloat(document.getElementById('total').textContent).toFixed(2); 

alert(typeof oldv); // Returns string 

alert(typeof +oldv); // Returns number