jquery转换价格从5位小数到最多2位小数

时间:2018-06-15 08:07:35

标签: javascript jquery magento decimal rounding

我的价格编号如下:$ 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/

有人可以帮助我,我做错了什么? 谢谢

2 个答案:

答案 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'
}));