Java中對大數的操作
阿新 • • 發佈:2019-01-03
1.整型大數類(BigInteger):
//構造:BigInteger(String val) 將 BigInteger的十進位制字串表示形式轉換為 BigInteger //物件.toString(int radix) 返回此 BigInteger 的給定基數的字串表示形式 //物件.pow(int exponent) 返回其值為 (thisexponent) 的 BigInteger //除此還有max,min,mod,gcd最大公約數,add,subtract,mutiply,divide等 import java.math.BigInteger; //BigInteger類 public class BigIntegerDemo { public static void main(String[] args) { BigInteger bi1 = new BigInteger("987654321");//構造方法,將字串轉換為BigInteger類 BigInteger bi2 = new BigInteger("123456789"); System.out.println("加法:" + bi1.add(bi2));//呼叫add()方法 System.out.println("減法:" + bi1.subtract(bi2)); System.out.println("乘法:" + bi1.multiply(bi2)); System.out.println("除法:" + bi1.divide(bi2)); System.out.println("取餘:" + bi1.mod(bi2)); //public BigInteger[] divideAndRemainder(BigInteger val)返回包含 (this / val) 後跟 (this % val) 的兩個 BigInteger 的陣列 BigInteger div[] = bi1.divideAndRemainder(bi2); System.out.println("商餘除法:商:" + div[0] + ",餘:" + div[1]); System.out.println("bi1的5次方為:" + bi1.pow(5)); } }
1.浮點型大數類(BigDecimal):
//構造: //BigDecimal(BigInteger val) 將 BigInteger 轉換為 BigDecimal。 //BigDecimal(String val) 將 BigDecimal 的字串表示形式轉換為 BigDecimal,還可以int double long //方法: //物件.toString()返回此 BigDecimal 的字串表示形式,如果需要指數,則使用科學記數法 //物件.toPlainString() 返回不帶指數字段的此 BigDecimal 的字串表示形式。 //物件.stripTrailingZeros() 返回數值上等於此小數,但從該表示形式移除所有尾部零的 BigDecimal。 //物件.BigDecimal add(BigDecimal augend) 返回一個 BigDecimal,其值為 (this + augend),其標度(精度)為 max(this.scale(), augend.scale())。 import java.math.BigDecimal; public class BigDecimalDemo { public static void main(String[] args) { BigDecimal bi1 = new BigDecimal(2345.6789);//將double型別轉換為BigDecimal型別 BigDecimal bi2 = new BigDecimal(98765.4321); System.out.println("BigDecimal型別轉換為double型別:" + bi1.doubleValue());//將BigDecimal型別轉換為double型別 System.out.println("加法:" + bi1.add(bi2).doubleValue());//add()方法返回值型別是BigDecimal型別需要轉換為double System.out.println("減法:" + bi1.subtract(bi2).doubleValue()); System.out.println("乘法:" + bi1.multiply(bi2).doubleValue()); //divide(物件,保留的位數,四捨五入的常量) 除法方法的應用 System.out.println("BigDecimal.ROUND_HALF_UP=" + BigDecimal.ROUND_HALF_UP); System.out.println("除法:" + bi2.divide(bi1,BigDecimal.ROUND_HALF_UP).doubleValue());//未四捨五入 System.out.println("除法:" + bi2.divide(bi1,3,BigDecimal.ROUND_HALF_UP).doubleValue());//保留三位小數 BigDecimal bi3 = new BigDecimal("12345.6789");//將String型別轉換為BigDecimal型別 BigDecimal bi4 = new BigDecimal("98765.4321111"); System.out.println("加法:" + bi3.add(bi4).doubleValue());//add()方法返回值型別是BigDecimal型別需要轉換為double System.out.println("除法:" + bi4.divide(bi3,BigDecimal.ROUND_HALF_UP).toEngineeringString()); System.out.println("BigDecimal型別轉換為EngineeringString型別:" + bi3.toEngineeringString()); } }