我的价格编号如下:$ 27,272.70000
我试图让它看起来像这样:$ 27,272.70
我坚持尝试不同的方法,但这是我迄今为止所做的:
jQuery(document).ready(function() {
jQuery('.cart-table-wrapper #shopping-cart-table tbody > tr').each(function() {
var the_sp_subtotal = jQuery(this).find('td.col-total.a-right span.price').text().replace("$", "");
var new_sp_subtotal = parseFloat(the_sp_subtotal).toFixed(2);
console.log(new_sp_subtotal);
});
});
但我得到的结果是:27.00
这是小提琴 - https://jsfiddle.net/zqe37xsk/1/
有人可以帮助我,我做错了什么? 谢谢
答案 0 :(得分:0)
parseFloat("27,272.70")
会返回27
,因为,
中的27,272.70
不再是数字的一部分。
作为替代方法,您可以替换最后几千个分隔符后面的部分,并在其上调用toFixed
。然后你可以把所有东西重新加在一起。
在each
功能中,使用:
const [dollar, ...separatedNumber] = jQuery(this).find('td.col-total.a-right span.price').text().split(/\$|,/);
separatedNumber[separatedNumber.length - 1] = Number(separatedNumber.slice(-1)).toFixed(2);
console.log("$" + separatedNumber.join(","));
答案 1 :(得分:0)
要正确格式化货币字符串,您可以使用toLocaleString
功能。为了正常工作,你必须将你的字符串转换为浮点数。
var price = '27,272.70000';
price = parseFloat(price.replace(/[$,]/g, ""));
console.log(price.toLocaleString('us-EN', {
style: 'currency',
currency: 'USD'
}));