评估包含千位分隔符的数字

时间:2014-03-16 22:04:26

标签: javascript

据我所知,如果parseFloat函数遇到除数字字符(0-9 + - 。和exponents)以外的任何字符,它只会评估该字符的数字,并丢弃其他任何字符。

我遇到了一个问题,我需要能够用千位分隔符验证数字,如下所示:

var number = "10,000.01"; //passes
var numberWithoutThousand = "10000.01"; //fails

//i.e:
if(parseFloat(number) <= 10000) {
     return true;   
} 
//passess

问题是上面的代码在技术上该数字大于10,000时返回true。

解决这个问题的最佳方法是什么?我在考试数字之前考虑过删除逗号,但不确定这是一个好策略。

3 个答案:

答案 0 :(得分:4)

你没有数字,你有字符串,所以只需删除逗号就可以了

number = number.replace(/\,/g, '');

答案 1 :(得分:1)

你的“剥离逗号”策略对我来说似乎很好。

if ( parseFloat( number.replace(",","") ) ) { etc(); } 

答案 2 :(得分:1)

正如已经建议的那样,要在数字中加,,它必须是一个字符串,所以搜索和替换。如果您必须定期执行此操作,请使自己成为可重复使用的功能。

的Javascript

function myParseFloat(value) {
    if (typeof value === 'string') {
        value = value.replace(/,/g, '');
    }

    return parseFloat(value);
}

var number1 = "10,000.01",
    number2 = "10000.01",
    number3 = 10000.01;

console.log(myParseFloat(number1), myParseFloat(number2), myParseFloat(number3));

输出

10000.01 10000.01 10000.01

jsFiddle