我有一个节省价格,它使用 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/