在JS中如何正确处理浮点数?parseFloat解析千分位数值异常如何解决
问题原因
parseFloat 解析字符串时,遇到不符合数值规则的字符就会终止解析逻辑。你拿到的数值字符串带千位分隔逗号,,不属于JS数值合法字符,解析到第一个逗号就会停止,因此只返回2。
解决步骤
- 先移除字符串中所有的千位分隔逗号:调用字符串的
replace方法,全局匹配所有,替换为空字符 - 再用
parseFloat解析处理后的纯数字字符串 - 如果需要固定保留两位小数的格式,调用
toFixed(2)方法即可
示例代码:
// 注意从PHP传递到JS时要套引号作为字符串传输,否则JS会把逗号识别为逗号运算符,直接给number赋值为2 var number = "2,206.00"; // 移除所有千位逗号后解析 var parsedNumber = parseFloat(number.replace(/,/g, '')); // 需要保留两位小数输出的场景 var result = parsedNumber.toFixed(2); console.log(parsedNumber); // 输出 2206 console.log(result); // 输出 "2206.00"
注意:如果后续需要对解析后的数值做算术运算,直接用
parsedNumber即可,toFixed返回的是字符串类型,直接运算会出现字符串拼接的异常结果。
内容的提问来源于stack exchange,提问作者user3733831
相关产品推荐
相关产品推荐

