toFixed不工作

Rob*_*len 1 javascript jquery

我有一个保存价格,使用Math.ceil方法将输出四舍五入到最接近的£,但是当我实现固定给我25.00英镑时,我得到的只是25英镑.

我的代码是这样的: -

jQuery(function($) {
    var price = $('.product-info-short meta[itemprop="price"]').attr("content");
    var discount = price/10;
    var earlyBirdPrice = price-discount;
    var div = document.querySelector('.earlyBirdPrice');


//method for early bird price//
div.innerHTML += '<div class="earlyBirdPrice">Price: £' + 
Number(earlyBirdPrice.toFixed(2)).toLocaleString('en') + '</div>';

//method for discount price//
div.innerHTML += '<div class="discount"> Saving you £' + 
Number(Math.ceil(discount.toFixed(2))).toLocaleString('en') + 
'</div>';

});
Run Code Online (Sandbox Code Playgroud)

js在这里小提琴:https: //jsfiddle.net/y18h9s7f/

我究竟做错了什么?

T.J*_*der 6

你做错了是在转换为字符串后toFixed,你将转换回一个数字,然后调用toLocaleString('en')该数字.

您可以任意使用toFixed以获得非区域设置特定的字符串与小数的给定数量, toLocaleString('en')获取特定区域设置的字符串的地方首选号码,但不能同时使用.

如果您的目标环境支持它,您可能希望使用Intl.NumberFormat(spec | MDN)(您可以对其进行功能测试并返回其他内容).例:

const formatter = typeof Intl === "object" && Intl.NumberFormat
  ? new Intl.NumberFormat('en', { // Yay, we have Intl.NumberFormat
      minimumFractionDigits: 2,
      maximumFractionDigits: 2
    })
  : {format: n => n.toFixed(2) }; // Boo, fall back. (Maybe something more intricate here.)
console.log(formatter.format(42.546789));
Run Code Online (Sandbox Code Playgroud)

42.55是因为我正在使用en语言环境.如果我用于de德语,它会显示42,55:

const formatter = typeof Intl === "object" && Intl.NumberFormat
  ? new Intl.NumberFormat('de', { // Yay, we have Intl.NumberFormat
      minimumFractionDigits: 2,
      maximumFractionDigits: 2
    })
  : {format: n => n.toFixed(2) }; // Boo, fall back. (Maybe something more intricate here.)
console.log(formatter.format(42.546789));
Run Code Online (Sandbox Code Playgroud)

这个使用浏览器的默认语言环境(例如,特定于用户):

const formatter = typeof Intl === "object" && Intl.NumberFormat
  ? new Intl.NumberFormat(undefined, { // Yay, we have Intl.NumberFormat
      minimumFractionDigits: 2,
      maximumFractionDigits: 2
    })
  : {format: n => n.toFixed(2) };      // Boo, fall back. (Maybe something more intricate here.)
console.log(formatter.format(42.546789));
Run Code Online (Sandbox Code Playgroud)