javascript - toFixed 不工作

标签 javascript jquery

我有一个节省价格,它使用 Math.ceil 方法将输出四舍五入到最接近的英镑,但是当我实现 toFixed 给我 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>';

});

js fiddle 在这里: https://jsfiddle.net/y18h9s7f/

我做错了什么?

最佳答案

你做错的是,在使用 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));

输出 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));

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

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));

关于javascript - toFixed 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47548766/

相关文章:

javascript - : function() do? 是什么意思

javascript - this.setState 不起作用

javascript - 将 DIV 附加到另一个 DIV 的一侧

jquery - 制作一个文本字段和一个全宽的按钮

javascript - 尝试使用 jquery 检查图像是否在页面上

javascript - 使用 Javascript 选择特定单词?

javascript - 从不同的 Javascript 函数检索 AJAX 值

javascript - 获取类设置为col-md-7但未设置宽度的div的宽度

javascript - 使用 THIS 选择当前元素的特定子元素

javascript - 使用 jQuery 从响应中进行正则表达式匹配