web-dev-qa-db-fra.com

Analyser les nombres avec un séparateur décimal virgule en JavaScript

J'ai utilisé cette fonction pour vérifier si une valeur est un nombre:

function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}

Mon programme doit travailler avec les valeurs allemandes. Nous utilisons une virgule comme séparateur décimal au lieu d'un point, donc cette fonction ne fonctionne pas.

J'ai essayé de faire ça:

n.replace(",",".")

Mais cela ne semble pas non plus fonctionner. La fonction exacte que j'ai essayé d'utiliser est:

function isNumber(n) {
    n=n.replace(",",".");
    return !isNaN(parseFloat(n)) && isFinite(n);
}

Le numéro ressemble à ceci 9.000,28 au lieu de l'habituel 9,000.28 si ma déclaration n'était pas assez claire.

20
Chaos

Vous devez d'abord remplacer (supprimer) les points dans le séparateur des milliers, puis prendre soin de la décimale:

function isNumber(n) {
    'use strict';
    n = n.replace(/\./g, '').replace(',', '.');
    return !isNaN(parseFloat(n)) && isFinite(n);
}
21
rink.attendant.6
var number = parseFloat(obj.value.replace(",",""));

Vous voudrez probablement aussi que cela aille dans l'autre sens ...

obj.value = number.toLocaleString('en-US', {minimumFractionDigits: 2});
15
Anthony