t=Math.floor(i)
i=i-t > .5 ? t+1 : t
这是我的方法

解决方案 »

  1.   

    先判断.5的.是的话加.1再ROUND...
      

  2.   

    <script>
    <script>
    var n=5.5;
    if(n*2==Math.round(n*2)){
    n=n-0.1;
    }
    alert(Math.round(n));
    </script>
    </script>
      

  3.   

    var t = Math.round(i - 0.00001);这样呢,可以么.
      

  4.   

    Math.floor(n + 0.5 - 1e-7);
      

  5.   

    小数位大于 .5 向上取整,小于等于则向下取整。
    第一步取得小数位,
    第二步将小数位与.5比较,
    第三部根据比较结果决定如何取整!function greatThanDotFiveToCeil(number)
    {
        return ((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number);
    }document.write(greatThanDotFiveToCeil(1),"<br />"); // 1
    document.write(greatThanDotFiveToCeil(1.9),"<br />"); // 2
    document.write(greatThanDotFiveToCeil(0.51),"<br />"); // 1
    document.write(greatThanDotFiveToCeil(0.4),"<br />"); // 0写出来就是 lz 自己滴方法,何必问呢,呵呵
      

  6.   

    支持指定小数位数的:<SCRIPT type="text/javascript">
    var a = [1.4,1.5,1.51,1.6];var xround = function(fn,n){
        n = n||0;
        var z = fn.toString().split('.'),x = z[0],y = z[1]&&z[1].toString(),r = new RegExp('(\\d{'+n+'})(\\d)(\\d*)');
        y&&r.test(y)&&y.replace(r,function(s,a,b,c){
            if(b&&b>5){var t = a?'.'+(a*1+1):1;x = x*1+t;return s;}
            if(b&&b==5){var t = a?c?'.'+(a*1+1):'.'+a:c?1:0;x = x*1+t;return s;}
            if(a){x = x+'.'+a;}
            return s;
        });
        return x;
    }var foo = function(list){
        while(list.length){
            var n = list.shift();
            document.write('xround('+n+') = '+xround(n)+'<br/>');
        }
    }foo(a);
    </SCRIPT>
      

  7.   

    俺再补充一个简易正则版滴
    L@_@K
    function greatThanDotFiveToCeil(number)
    {
        // Method 1: 
        //return ((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number);    // Method 2:
        var reg = /^\d+\.([6-9]\d*|5\d+)$/g;
        return reg.test(number) ? Math.ceil(number) : Math.floor(number);
        
    }document.write(greatThanDotFiveToCeil(1),"<br />"); // 1
    document.write(greatThanDotFiveToCeil(1.9),"<br />"); // 2
    document.write(greatThanDotFiveToCeil(0.51),"<br />"); // 1
    document.write(greatThanDotFiveToCeil(0.4),"<br />"); // 0
      

  8.   

    晕,这么快就结贴了,俺滴正则精度版还没来得及贴呢
    L@_@K
    /*
     * Summary: 精度位数之后的小数位大于 5 则进位,小于等于 5 则舍弃。
     * 
     * number: 给定的数字。
     * iPrecision: 精度位数,即保留的小数位数。
     */
    function greatThanDotFiveToCeil(number, iPrecision)
    {
        if (iPrecision) number = number * Math.pow(10,iPrecision);
        else iPrecision = 0;    // Method 1: 
        //return (((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number))/Math.pow(10,iPrecision);    // Method 2:
        var reg = /^\d+\.([6-9]\d*|5\d+)$/g;
        return (reg.test(number) ? Math.ceil(number) : Math.floor(number))/Math.pow(10,iPrecision);
        
    }document.write(greatThanDotFiveToCeil(0.6),"<br />"); // 1
    document.write(greatThanDotFiveToCeil(1.95),"<br />"); // 2
    document.write(greatThanDotFiveToCeil(0.5158),"<br />"); // 1
    document.write(greatThanDotFiveToCeil(0.415),"<br />"); // 0
    document.write("<br />");
    document.write(greatThanDotFiveToCeil(0.6),"<br />"); // 1
    document.write(greatThanDotFiveToCeil(1.95, 1),"<br />"); // 1.9
    document.write(greatThanDotFiveToCeil(0.5158, 2),"<br />"); // 0.52
    document.write(greatThanDotFiveToCeil(0.415, 2),"<br />"); // 0.41
      

  9.   

    怎么代码量差距这么大啊!呵呵
    n = 1.501
    Math.floor(n + 0.5 - 1e-7) : 2
    Math.floor(n + 0.49) : 1