java中大數處理和高精度小數處理(so easy)

YX_blog發表於2015-08-14

   試用範圍:當對資料處理時,最大的long型不能裝下,這時候就需要採用大數BigInteger來解決

簡單的例子:
package cn.hncu.BigNUM;

import java.math.BigInteger;

public class bigIntegerdemo {

	public static void main(String[] args) {
			BigInteger sum=jc(100);//計算100的階乘是很大的數,long是超範圍的,所以採用Java 中的大數處理,BigInteger
			System.out.println(sum);
	}

	private static BigInteger jc(int n) {
		BigInteger s=BigInteger.valueOf(1);//必須先變成bigInteger型別的才能進行運算
		for(int i=1;i<=n;i++){
			s=s.multiply(BigInteger.valueOf(i));//BigInteger的函式乘法也要用到函式
		}
		return s;
		
	}

}


若是採用double 值來操作,就會可能出現0.9999等一些近似值
部分簡單程式碼
package cn.hncu.BigNUM;

import java.math.BigDecimal;

public class BigDecimal1 {
//高精度數處理
	public static void main(String[] args) {
			double sum=0;
			for(int i=0;i<10;i++){
				sum=sum+0.1;
			}//0.9999999999999999
			System.out.println(sum);//這樣的結果,是按著科學計演算法來算,如double 四位,用二進位制來表示,因為不可能完全能夠表示,所以去了近似值 
			 add();
	}

	private static void add() {
		BigDecimal be =new BigDecimal(0); 

		for(int i=0;i<10;i++){
			be=be.add(new BigDecimal(0.1));//變成高精度後,會運算精準
		}
		System.out.println(be.doubleValue());//1.0
		
	}
	

}


相關文章