28

我用这个函数来检查一个值是否是一个数字:

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

我的程序需要使用德国价值观。我们使用逗号作为小数点分隔符而不是点,所以这个函数不起作用。

我试图这样做:

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

但它似乎也不起作用。我尝试使用的确切功能是:

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

如果我的陈述不够清楚,这个数字看起来像这样9.000,28,而不是通常的数字。9,000.28

4

3 回答 3

33

您需要先替换(删除)千位分隔符中的点,然后处理小数:

function isNumber(n) {
    'use strict';
    n = n.replace(/\./g, '').replace(',', '.');
    return !isNaN(parseFloat(n)) && isFinite(n);
}
于 2013-08-23T14:28:56.047 回答
24
var number = parseFloat(obj.value.replace(",",""));

您可能还希望这反过来...

obj.value = number.toLocaleString('en-US', {minimumFractionDigits: 2});
于 2013-12-21T06:03:30.207 回答
1

我相信最好的方法是简单地使用 toLocaleString 方法。例如,我住在巴西,这里我们用逗号作为小数分隔符。然后我可以这样做:

var number = 10.01;
console.log(number)
// log: 10.01

console.log(number.toLocaleString("pt-BR"));
// log: 10,01

于 2020-05-25T12:22:04.213 回答