convertir une variable de chaîne JavaScript en décimal / argent


114

Comment pouvons-nous convertir une variable de chaîne JavaScript en décimal?

Existe-t-il une fonction telle que:

parseInt(document.getElementById(amtid4).innerHTML)

Réponses:


240

Oui - parseFloat.

parseFloat(document.getElementById(amtid4).innerHTML);

Pour la mise en forme des nombres, utilisez toFixed:

var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);

num est maintenant une chaîne avec le nombre formaté avec deux décimales.


1
Pouvons-nous faire cette variable avec 2 décimales telles que 120,50? en ce moment, je reçois seulement 120,5.
Varada

16
Pour citer @PhilipWhitehouse "S'il vous plaît, à toute personne lisant ceci à l'avenir, n'utilisez pas le flottant pour stocker la devise. Vous perdrez la précision et les données. Vous devez le stocker sous forme de nombre entier de centimes (ou centimes, etc.), puis convertir avant à la sortie. ". Source: stackoverflow.com/questions/149055/…
SSH ce

@SSHThis Autant que je sache, JavaScript n'a pas de type entier. Il n'a qu'un type Number qui sont tous stockés en interne sous forme de nombres à virgule flottante 64 bits. Votre point est valable pour les autres langages qui ont des types entiers tels que C #, C ++, mais pas vraiment pour JavaScript.
Simon Brangwin

1
@SimonBrangwin Son argument est toujours valable, mais la sémantique peut prêter à confusion. Ce qu'il veut vraiment dire, c'est "stocker uniquement les devises sous forme de nombres entiers en javascript puisqu'ils seront stockés sous forme de nombres à virgule flottante".
Josh Noe

1
Juste un rappel: parseFloat('22w')est 22et parseFloat('w22')estNaN
IG Pascual

65

Vous pouvez également utiliser le Numberconstructeur / fonction (pas besoin de base et utilisable à la fois pour les entiers et les flottants):

Number('09'); /=> 9
Number('09.0987'); /=> 9.0987

Alternativement, comme Andy E l'a dit dans les commentaires, vous pouvez utiliser +pour la conversion

+'09'; /=> 9
+'09.0987'; /=> 9.0987

Ce n'est pas pris en charge par IE11
Pantalon

@Pants, il s'agit d' extensions de l'objet intégré Number dans ES6 , pas de pouvoir utiliserNumber
KooiInc

11

Cela marche:

var num = parseFloat(document.getElementById(amtid4).innerHTML, 10).toFixed(2);


2

Il est assez risqué de s'appuyer sur des fonctions javascript pour comparer et jouer avec les nombres. En javascript (0,1 + 0,2 == 0,3) renverra faux en raison d'erreurs d'arrondi. Utilisez la bibliothèque math.js.


1

Un moyen simple et rapide serait d'utiliser + x Il garde le signe intact ainsi que les nombres décimaux. L'autre alternative est d'utiliser parseFloat (x). La différence entre parseFloat (x) et + x est pour une chaîne vide + x renvoie 0 où comme parseFloat (x) renvoie NaN.


1

J'ai créé une petite fonction d'aide pour faire cela et attraper toutes les données mal formées

function convertToPounds(str) { 
    var n = Number.parseFloat(str);
    if(!str || isNaN(n) || n < 0) return 0;
    return n.toFixed(2);
}

La démo est

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.