Java大數 1、java.math.BigInteger類 不可變的任意精度的整數。所有操作中,都以二進制補碼形式表示。BigInteger 提供所有 Java 的基本整數操作符的對應物,并提供 java.lang.Math 的所有相關方法。
另外,BigInteger 還提供以下運算:模算術、GCD 計算、質數測試、素數生成、位操作以及一些其他操作。
BigInteger中要申明一個整數需要用類似申明一個對象的方法,比方說整數1,就要這樣子:BigInteger x =new BigInteger(""+1);或者BigInteger x = BigInteger.valueOf(1L); 下面用代碼來說話吧:
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
//這種方式是錯的:BigInteger x = 1;
//大數中的1---法1:
BigInteger x = new BigInteger(""+1);
System.out.println(x.intValue());
// 100!
BigInteger a = jc(100);
System.out.println(a.toString());
System.out.println(a.toString(16));//以指定進制的方式輸出
}
public static BigInteger jc( int n){
/*求n的階乘---基本資料類型的寫法
int s=1;
for(int i=1;i<=n;i++){
s = s*i;
}
return s;
*/
//求n的階乘---大數類型的寫法
//大數中的1---法2:
BigInteger s = BigInteger.valueOf(1L);
for(int i=1;i<=n;i++){
s = s.multiply( BigInteger.valueOf(i) );
}
return s;
}
}
2、java.math.BigDecimal類 不可變的、任意精度的有符号十進制數。 BigDecimal由任意精度的整數非标度值和32位的整數标度(scale: 以10為底的指數)。
BigDecimal 類提供以下操作:算術、标度操作、舍入、比較、雜湊演算法和格式轉換。toString( )方法提供 BigDecimal 的規範表示形式。
申明一個數的方法與BigInteger類似 下面還是在代碼裡面具體地說吧:
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
double s = 0;
for(int i=0;i<10;i++){
s = s+0.1;
}
System.out.println("s="+s);
BigDecimal d = new BigDecimal(0D);
for(int i=0;i<10;i++){
d = d.add( new BigDecimal(0.1D));
//BigDecimal加法的表示方式
}
System.out.println("d="+d);
System.out.println(d.doubleValue());
//doubleValue()方法将此 BigDecimal 轉換為 double。預設保留一位小數
double dd = 12.12345667774332D;
BigDecimal bd = new BigDecimal(dd);
//保留7位小數且四舍五入
//下面的ROUD_UP舍入遠離零的舍入模式。在丢棄非零部分之前始終增加數字。注意,此舍入模式始終不會減少計算值的大小。
bd = bd.divide(new BigDecimal(1.0), 7, BigDecimal.ROUND_UP);
System.out.println(bd.doubleValue());
}
}
2、java.math.BigDecimal類 不可變的、任意精度的有符号十進制數。 BigDecimal由任意精度的整數非标度值和32位的整數标度(scale: 以10為底的指數)。
BigDecimal 類提供以下操作:算術、标度操作、舍入、比較、雜湊演算法和格式轉換。toString( )方法提供 BigDecimal 的規範表示形式。
申明一個數的方法與BigInteger類似 下面還是在代碼裡面具體地說吧: