數字操做類

  數字操做類是針對數字進行處理,可使用內置數學類,完成。也能夠生產隨機數java

Math類

  java.lang.Math類是整個的JDK裏面惟一一個與數學計算有關的程序類。着裏面提供有一些基礎的數學函數,這個類中的全部方法都使用了static進行定義,全部的方法均可以經過類名稱直接調用,而此類中有一個round須要特別注意dom

    四捨五入方法定義:public static long round(double a)ide

範例:觀察round()方法函數

1 package cn.Tony.demo;
2 
3 public class TestDemo {
4     public static void main(String[] args) throws Exception {
5         double num=151516.56515;
6         System.out.println(Math.round(num));
7     }
8 }

  若是直接使用round方法處理的話默認的處理原則就是將小數位直接進位,網站

範例:繼續觀察round的數據spa

 1 package cn.Tony.demo;
 2 
 3 public class TestDemo {
 4     public static void main(String[] args) throws Exception {
 5         System.out.println(Math.round(15.51));//16
 6         System.out.println(Math.round(15.5));//16
 7         //若是負數小數沒大於0.5都不進位
 8         System.out.println(Math.round(-15.5));//-15
 9         System.out.println(Math.round(-15.51));//-16
10     }
11 }

  我但願能夠準確的保存小數位處理code

 1 package cn.Tony.demo;
 2 
 3 class MyMath{
 4     /**
 5      * 進行數據的四捨五入操做
 6      * @param num    表示原始操做數據
 7      * @param scale    表示保留的小數位數
 8      * @return    已經正確四捨五入後的內容
 9      */
10     public static double round(double num,int scale) {
11         return Math.round(num*Math.pow(10, scale))/Math.pow(10, scale);
12     }
13 }
14 public class TestDemo {
15     public static void main(String[] args) throws Exception {
16          System.out.println(MyMath.round(1823.2567,2));
17     }
18 }

  這種四捨五入的操做是最簡單的處理模式。之後的開發必定會是使用到blog

隨機類:Random

  在不少語言裏面都支持隨機數子的產生,那麼在Java裏面使用java.util.Random類來實現這種隨機數的處理;ip

範例:產生隨機數ci

 1 package cn.Tony.demo;
 2 
 3 import java.util.Random;
 4 
 5 public class TestDemo {
 6     public static void main(String[] args) throws Exception {
 7         Random rand=new Random();
 8         for(int x=0;x<10;x++) {    //100表示最大值,數據的範圍是0到99
 9             System.out.println(rand.nextInt(100)+".");
10         }
11     }
12 }

  在許多的網站上的英文隨機驗證碼實際上就能夠經過此類模式完成,

 1 package cn.Tony.demo;
 2 
 3 import java.util.Random;
 4 public class TestDemo {
 5     public static void main(String[] args) throws Exception {
 6         char data[]=new char[] {'a','b','c','d'};
 7         Random rand=new Random();
 8         for(int x=0;x<3;x++) {    
 9             System.out.println(data[rand.nextInt(data.length)]+".");
10         }
11     }
12 }

  若是是中文驗證碼也很簡單,寫一箇中文驗證碼庫。

大數字的操做類:

  通常的開發中使用的數據都包含在給定的數據之中,可是有時候數據真的很大,超過了預期的範圍。原始程序中可使用字符串解決。若是要進行數學計算,則取出每一位進行手工的處理。可是這種操做很麻煩。因此java.math包裏面提供有兩個類:BigInteger BigDecimal。這兩個類都屬於Number類,

範例:觀察BigInteger操做

 

 1 package cn.Tony.demo;
 2 import java.math.BigInteger;
 3 public class TestDemo {
 4     public static void main(String[] args) throws Exception {
 5         BigInteger bigA=new BigInteger("46515615615151111111");
 6         BigInteger bigB=new BigInteger("1161561");
 7         System.out.println("加法計算:"+bigA.add(bigB));
 8         System.out.println("減法計算:"+bigA.subtract(bigB));
 9         System.out.println("乘法計算:"+bigA.multiply(bigB));
10         System.out.println("除法計算:"+bigA.divide(bigB));
11         BigInteger result[]=bigA.divideAndRemainder(bigB);
12         System.out.println("商"+result[0]+",餘數"+result[1]);
13     }
14 }

 

範例:大小數BigDecimal

 

 

 1 package cn.Tony.demo;
 2 import java.math.BigDecimal;
 3 class MyMath{
 4     public static double round(double num,int scale) {
 5         return new BigDecimal(num).divide(new BigDecimal(1),scale,BigDecimal.ROUND_HALF_UP).doubleValue();
 6     }
 7 }
 8 public class TestDemo {
 9     public static void main(String[] args) throws Exception {
10         System.out.println(MyMath.round(16516.561, 2));
11     }
12 }

 

  關於四捨五入的處理實際上有兩類作法。

  這些給定的默認的數學操做的功能都十分有限,在開法裏面若是你真的用到複雜的邏輯,你要找其餘的開發包去作。

相關文章
相關標籤/搜索