- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个节省价格,它使用 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/
像下面这样使用 toFixed 得到: var a=0.5, b=1, c=1.5; console.log(a.toFixed(), b.toFixed(), c.toFixed()); // 0.
这个问题已经有答案了: Javascript toFixed function (6 个回答) 已关闭 9 年前。 当非小数部分大于 4 时,小数部分将被 chop 为 .3但当它小于 4 时,它会四
var number = 1.2; var rounded = number.tofixed() + 2 我正在尝试用任何数字求和 tofixed 值,但使用上面的代码我被四舍五入 = 12 吓到了.
我想知道之间的主要区别是什么 (2.3444).toFixed(2) ==> 2.34 还有 +(2.3444).toFixed(2) ==> 2.34 它们都给出相同的结果。谁能解释一下我什么时候需
根据这个post , 42..toFixed( 3 ); // "42.000" 上述代码有效,42..toFixed(3) 有效,因为第一个 . 是数字的一部分,第二个 . > 是属性运算符。
在许多情况下,toFixed() 会因 JavaScript 数学中的浮点而失败。 我找到了这个解决方案: function toFixed(decimalPlaces) { var factor =
我有以下代码块: export interface Record { Percentage_Emissions: number; Percentage_Emissions_Previous: numb
我正在使用 javascript 绑定(bind)到一些复选框,toFixed(2) 没有四舍五入。任何想法为什么它不四舍五入?例如,如果号码是 859.385,它只会显示 859.38 而不是 85
在我的程序中,我需要四舍五入到最接近的两位小数的“浮点”数字,经过一番研究,我决定使用 toFixed(..) 来实现此目的,如下例所示。使用 toFixed() 的缺点是什么?它在所有浏览器中都能正
美好的一天, 我仍在学习 JS 和 HTML,我注意到一些对我来说非常有趣的事情 我正在使用 Google 地理编码脚本,并在 map 上创建了一个点击事件来检索 GPS 坐标, function
我正在使用 toFixed 但该方法未按预期运行 parseFloat(19373.315).toFixed(2); //19373.31 Chrome 预期输出:19373.32 parseFl
我正在测试 javascript 的 toFixed() 方法。结果如下图。 (49.175).toFixed(2) => "49.17" (49.775).toFixed(2) => "49.77"
在特定组的用户的帐户仪表板上会显示一个唯一的编号。该数字是从数据库中获取并经常更改的。数量小于 10,000,000。 如果元素的宽度开始 chop 文本,那么将数字从“2,643,977”更改为“2
我的代码出现错误,以前从未遇到过这个错误,这真的很奇怪。我确实尝试过 parseFloat 但这也不起作用..代码:https://gist.github.com/markd69/aca03cab20
我正在使用 KnockoutJS,但遇到了一个问题,我不知道如何寻找解决方案: 我有一个包含记录的表: Edit Enter Hour
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
对于四舍五入小数(价格),我已经使用 .toFixed(2) 一段时间了。但我最近发现 JavaScript 不能“精确”四舍五入小数。我有点震惊,即使 10.005 也无法正确舍入为 10.01。它
我有以下代码来计算并显示两个值的总和。 var oldprice_formated = parseFloat(oldprice).toFixed(2); var extraPrice = parseF
这是我的脚本: jQuery(document).ready(function () { jQuery('#btnCalculate').click(function () {
我想保留数字后面的两位数字,即 2.89 或 2.00。谷歌把我带到this answer使用.toFixed(2)。 虽然效果很好,但在输入 input 值时效果不佳: const [ value,
我是一名优秀的程序员,十分优秀!