jQuery round decimal to .49或.99

时间:2011-03-25 10:51:11

标签: jquery math floating-point rounding decimal

我正在尝试研究如何将小数舍入为.49或.99。

我找到了toFixed(2)功能,但不确定如何向上或向下舍入。

基本上需要到达最接近的价格点,所以例如X.55会下降到X.49而X.84会上升到X.99。

5 个答案:

答案 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;
};