据我所知,如果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。
解决这个问题的最佳方法是什么?我在考试数字之前考虑过删除逗号,但不确定这是一个好策略。
答案 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上