在 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