Math.round()

在 JAVA 中四捨五入採用 Math.round(T a) 函數,函數返回的是一個 long 類型的長整型,參數 a 能夠是 double 也能夠是 float。java

查看 JDK 源碼:less

  

public static long round(double a) {
        if (a != 0x1.fffffffffffffp-2) // greatest double value less than 0.5
            return (long)floor(a + 0.5d);
        else
            return 0;
}

  

public static double floor(double a) {
        return StrictMath.floor(a); // default impl. delegates to StrictMath
}

  

 public static double floor(double a) {
     return floorOrCeil(a, -1.0, 0.0, -1.0);
 }

  

其實具體實現仍是挺複雜的。函數

須要注意的是 a 爲負數的狀況。spa

 1 System.out.println("小數點後第一位=5");
 2 System.out.println("正數:Math.round(11.5)=" + Math.round(11.5));
 3 System.out.println("負數:Math.round(-11.5)=" + Math.round(-11.5));
 4 System.out.println();
 5 System.out.println("小數點後第一位<5");
 6 System.out.println("正數:Math.round(11.46)=" + Math.round(11.46));
 7 System.out.println("負數:Math.round(-11.46)=" + Math.round(-11.46));
 8 System.out.println();
 9 System.out.println("小數點後第一位>5");
10 System.out.println("正數:Math.round(11.68)=" + Math.round(11.68));
11 System.out.println("負數:Math.round(-11.68)=" + Math.round(-11.68));

輸出結果是:code

小數點後第一位=5
正數:Math.round(11.5)=12
負數:Math.round(-11.5)=-11

小數點後第一位<5
正數:Math.round(11.46)=11
負數:Math.round(-11.46)=-11

小數點後第一位>5
正數:Math.round(11.68)=12
負數:Math.round(-11.68)=-12

正數和咱們平時學的同樣,負數在小數點後第一位爲5時,直接捨去小數部分,大於5時減一,小於5時直接捨去小數部分。blog

相關文章
相關標籤/搜索