我有一个节省的价格,就是使用Math.ceil方法将输出集合到最近的me,但是当我实现toFixed给我GB25.00时,我得到的只是me 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小提琴:https://jsfiddle.net/y18h9s7f/
我做错什么了?
发布于 2017-11-29 09:06:25
试试这个:-
div.innerHTML += '<div class="discount"> Saving you £' + Number(Math.ceil(discount)).toFixed(2) + '</div>';发布于 2017-11-29 09:09:25
您所做的错误是,在使用toFixed转换成字符串之后,您将转换回一个数字,然后调用该数字上的toLocaleString('en')。
您可以使用toFixed获取具有给定小数位数的非区域设置特定字符串,使用或 toLocaleString('en')获取具有默认位置数的特定于地区的字符串,但不能同时使用两者。
如果您的目标环境支持Intl.NumberFormat (等级库 \ 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));
发布于 2017-11-29 09:05:37
您可以将Math.ceil()/Number()应用于toFixed()之上,因此结果是一个数字,而不是浮点字符串。
https://stackoverflow.com/questions/47548766
复制相似问题