我正在尝试研究如何将小数舍入为.49或.99。
我找到了toFixed(2)
功能,但不确定如何向上或向下舍入。
基本上需要到达最接近的价格点,所以例如X.55会下降到X.49而X.84会上升到X.99。
答案 0 :(得分:11)
这不需要jQuery,但可以用纯JavaScript完成:
Math.round(price*2)/2 - 0.01
注意还要考虑将数字舍入为0(price
>> 0.25)的情况,因为在这种情况下,数字会产生-0.01。
答案 1 :(得分:1)
如果每次jQuery让事情变得比他们需要的更加迟钝的话,我就有一美元......
window.round = function(num) {
cents = (num * 100) % 100;
if (cents >= 25 && cents < 75) {
//round x.25 to x.74 -> x.49
return Math.floor(num) + 0.49;
}
if (cents < 25) {
//round x.00 to x.24 -> [x - 1].99
return Math.floor(num) - 0.01;
}
//round x.75 to x.99 -> x.99
return Math.floor(num) + 0.99;
};
答案 2 :(得分:0)
我认为你不能围绕/修复一个特定的数字,你需要检查/计算这个值,这可能意味着:向上舍入然后减去1或向上舍入并减去51.
答案 3 :(得分:0)
这不需要jQuery。你只需要来自javascript的数学类,四舍五入将需要一些额外的减法,因为舍入将给出最接近的十进制
答案 4 :(得分:0)
稍微编辑 aroth 的答案,让我们说我们还需要四舍五入到最接近的 5 乘法值
window.round = function(num) {
cents = (num * 100) % 100;
if (cents >= 25 && cents < 75) {
//round x.25 to x.74 -> x.49
return Math.ceil(num/5)*5 + 0.49;
}
if (cents < 25) {
//round x.00 to x.24 -> [x - 1].99
return Math.ceil(num/5)*5 - 0.01;
}
//round x.75 to x.99 -> x.99
return Math.ceil(num/5)*5 + 0.99;
};