2010-11-27 16 views
17

J'ai un entier (par exemple), et je veux le convertir en un nombre à virgule flottante, avec un nombre de décimales.Comment convertir un entier en float en JavaScript?

Projet

function intToFloat(num, decimal) { [code goes here] } 
intToFloat(12, 1) // returns 12.0 
intToFloat(12, 2) // returns 12.00 
// and so on… 

Répondre

31

Qu'est-ce que vous avez déjà un nombre à virgule flottante, ils sont tous les nombres à virgule flottante 64 bits en JavaScript.

Pour obtenir décimales lors du rendu (comme une chaîne, pour la sortie), utilisez .toFixed(), comme ceci:

function intToFloat(num, decPlaces) { return num.toFixed(decPlaces); } 

You can test it out here (bien que je renomme la fonction, étant donné qu'il est pas une description exacte) .

+1

+1 On ne sait jamais il y a une fonction intégrée pour que: P – timdream

+0

de Nice! Je - tout comme le commentateur précédent - n'ai jamais su qu'il y avait une fonction de bulit-dans pour cela! :) Je pense qu'avec une fonction aussi courte, il n'est pas nécessaire de déclarer une autre fonction pour cela, cela ralentirait simplement le script. – nyuszika7h

+0

+1 Nice Vraiment je l'aime quand je vois de nombreuses fonctionnalités cachées sur javascript – Marwan

4

àFixed (x) n'est pas une solution de navigateur croisée. Solution complète suit:

function intToFloat(num, decPlaces) { return num + '.' + Array(decPlaces + 1).join('0'); } 
+0

'toFixed' fonctionne dans la dernière version stable de Chrome, Firefox, Internet Explorer et Opera. Il fonctionne également dans les modes de document IE5/IE7/IE8/IE9/IE10 (il n'y a pas de mode document IE6). Le comportement est cohérent. – nyuszika7h

+2

toFixed fonctionne différemment dans IE. Lorsque vous exécutez intToFloat (1.45, 1) IE retournera '1.5' et Crome ou FF retournera '1.4' – simonbor

+0

Je vois. Je n'ai pas testé ça. – nyuszika7h

0

Si vous n'avez pas besoin (ou pas sûr) nombre fixe de décimales, vous pouvez simplement utiliser

xAsString = (Number.isInteger(x)) ? (x + ".0") : (x.toString()); 

Ceci est pertinent dans les contextes tels que, vous avez un x comme 7.0 mais x.toString() vous donnera "7" et vous avez besoin de la chaîne "7.0". Si le x se trouve être une valeur flottante comme dire 7.1 ou 7.233 alors la chaîne devrait également être "7.1" ou "7.233" respectivement.

Sans utiliser Number.isInteger():

xAsString = (x % 1 === 0) ? (x + ".0") : (x.toString()); 
Questions connexes