Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery将小数点四舍五入到.49或.99_Jquery_Math_Floating Point_Rounding_Decimal - Fatal编程技术网

jQuery将小数点四舍五入到.49或.99

jQuery将小数点四舍五入到.49或.99,jquery,math,floating-point,rounding,decimal,Jquery,Math,Floating Point,Rounding,Decimal,我在想如何把小数点四舍五入到.49或.99 我找到了toFixed(2)函数,但不确定如何向上或向下取整 基本上需要达到最接近的价格点,因此,例如X.55将下降到X.49,X.84将上升到X.99。这不需要jQuery,但可以使用纯JavaScript完成: Math.round(price*2)/2 - 0.01 注意也要考虑数字的数量将被舍入到0的情况(价格>代码> 0.25),因为在这种情况下,它会产生-0.01。 < P>我不能把一个特定的数循环/固定,你需要检查/计算这个值,这可能意

我在想如何把小数点四舍五入到.49或.99

我找到了
toFixed(2)
函数,但不确定如何向上或向下取整


基本上需要达到最接近的价格点,因此,例如X.55将下降到X.49,X.84将上升到X.99。

这不需要jQuery,但可以使用纯JavaScript完成:

Math.round(price*2)/2 - 0.01

注意也要考虑数字的数量将被舍入到0的情况(<代码>价格>代码> 0.25),因为在这种情况下,它会产生-0.01。

< P>我不能把一个特定的数循环/固定,你需要检查/计算这个值,这可能意味着:四舍五入然后减去1或四舍五入然后减去51。

这不需要jQuery。你只需要上javascript的数学课,取整也需要一些额外的减法,因为如果每次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;
};
window.round=函数(num){
分=(数值*100)%100;
如果(美分>=25&&美分<75){
//第x.25轮至第x.74轮->第x.49轮
返回数学地板(num)+0.49;
}
如果(美分<25){
//第x.00轮至第x.24轮->[x-1].99
返回数学地板(num)-0.01;
}
//第x.75轮至第x.99轮->第x.99轮
返回数学地板(num)+0.99;
};

稍微编辑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;
};
window.round=函数(num){
分=(数值*100)%100;
如果(美分>=25&&美分<75){
//第x.25轮至第x.74轮->第x.49轮
返回数学单元(num/5)*5+0.49;
}
如果(美分<25){
//第x.00轮至第x.24轮->[x-1].99
返回Math.ceil(num/5)*5-0.01;
}
//第x.75轮至第x.99轮->第x.99轮
返回Math.ceil(num/5)*5+0.99;
};

阅读那些有用的东西。不错!我会确保考虑到-0.01可能性,正如你指出的那样。