jQuery转换欧洲格式价格字符串为数字出现舍入错误怎么解决?
问题原因分析
你遇到的计算错误根源确实是逗号作为小数分隔符的问题:原生parseFloat方法仅识别英文句号.作为小数分隔符,遇到逗号,时会直接截断后续内容,你拿到的21,01 €经过parseFloat处理后实际只读取到21,所以调用toFixed(2)后输出为21.00。你提到的「先清洗特殊字符再转数字」的思路才是正确的,无法直接对包含特殊符号、非标准分隔符的字符串做数字转换。
解决代码
// 1. 获取原始价格文本 const priceText = $('.aggregation--list .entry--totalnet .entry--value').text(); // 2. 文本清洗:把逗号替换为标准小数分隔符点,再过滤掉所有非数字、非点的字符(包含 、€符号) const cleanedPriceStr = priceText.replace(',', '.').replace(/[^0-9.]/g, ''); // 3. 转换为数字后保留两位小数 const paidNettoWithShipping = parseFloat(cleanedPriceStr).toFixed(2); console.log(paidNettoWithShipping); // 输出正确结果 21.01
注意:如果后续需要对价格做数值计算,不要直接使用
toFixed返回的字符串结果,建议先保留数字类型完成所有运算,最终输出展示时再做格式化处理。
内容的提问来源于stack exchange,提问作者skarpeta
相关产品推荐
相关产品推荐

