首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >toFixed不工作

toFixed不工作
EN

Stack Overflow用户
提问于 2017-11-29 09:02:41
回答 6查看 1.3K关注 0票数 1

我有一个节省的价格,就是使用Math.ceil方法将输出集合到最近的me,但是当我实现toFixed给我GB25.00时,我得到的只是me 25。

我的代码是这样的:

代码语言:javascript
复制
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小提琴:https://jsfiddle.net/y18h9s7f/

我做错什么了?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-11-29 09:06:25

试试这个:-

代码语言:javascript
复制
div.innerHTML += '<div class="discount"> Saving you £' + Number(Math.ceil(discount)).toFixed(2) + '</div>';

演示:- https://jsfiddle.net/f18o1v91/

票数 2
EN

Stack Overflow用户

发布于 2017-11-29 09:09:25

您所做的错误是,在使用toFixed转换成字符串之后,您将转换回一个数字,然后调用该数字上的toLocaleString('en')

您可以使用toFixed获取具有给定小数位数的非区域设置特定字符串,使用 toLocaleString('en')获取具有默认位置数的特定于地区的字符串,但不能同时使用两者。

如果您的目标环境支持Intl.NumberFormat (等级库 \ MDN),您可能会考虑使用它(您可以对它进行特性测试并返回到其他地方)。示例:

代码语言:javascript
复制
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

代码语言:javascript
复制
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));

它使用浏览器的默认区域设置(例如,特定于用户的):

代码语言:javascript
复制
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));

票数 6
EN

Stack Overflow用户

发布于 2017-11-29 09:05:37

您可以将Math.ceil()/Number()应用于toFixed()之上,因此结果是一个数字,而不是浮点字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47548766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档