一.BigInteger类
package xun;
import java.math.*;
public class Myclass1 {
public static void main(String[] args) {
//针对大整数的处理类,支持任何精度的整数。除了基本的加减乘除操作,还提供了绝对值,相反数,最大公约数,质数判断等操作。
System.out.println("----BigInteger类----");
//参数中的双引号不能省略,因为参数是以字符串的形式存在的。
BigInteger bigInstance = new BigInteger("4");
System.out.println("将参数转换为指定的类型操作:"+bigInstance.floatValue());
System.out.println("加法操作:"+bigInstance.add(new BigInteger("6")));
System.out.println("减法操作:"+bigInstance.subtract(new BigInteger("2")));
System.out.println("乘法操作:"+bigInstance.multiply(new BigInteger("6")));
System.out.println("除法操作:"+bigInstance.divide(new BigInteger("6")));
System.out.println("取商操作:"+bigInstance.divideAndRemainder(new BigInteger("3"))[0]);
System.out.println("取余操作:"+bigInstance.divideAndRemainder(new BigInteger("3"))[1]);
System.out.println("k次方操作:"+bigInstance.pow(2));
System.out.println("相反数操作:"+bigInstance.negate());
//若n为负数,则做右移操作.
System.out.println("左移操作:"+bigInstance.shiftLeft(2));
//若n为负数,则做左移操作.
System.out.println("右移操作:"+bigInstance.shiftRight(2));
System.out.println("与操作:"+bigInstance.and(new BigInteger("6")));
System.out.println("或操作:"+bigInstance.or(new BigInteger("2")));
//r与val相等输出0,r<val输出-1,r>val输出1.
System.out.println("数字比较操作:"+bigInstance.compareTo(new BigInteger("4")));
System.out.println("判断数字是否相等操作:"+bigInstance.equals(new BigInteger("6")));
System.out.println("返回较小值操作:"+bigInstance.min(new BigInteger("6")));
System.out.println("返回较大值操作:"+bigInstance.max(new BigInteger("2")));
System.out.println("返回绝对值操作:"+bigInstance.abs());
System.out.println("返回最大公约数操作:"+bigInstance.gcd(new BigInteger("2")));
//BigInteger构造方法转换进制
//十进制数字20转换成2进制
String str1 = new BigInteger("20",10).toString(2);
//十进制数字20转换成8进制
String str2 = new BigInteger("20",10).toString(8);
//十进制数字20转换成16进制
String str3 = new BigInteger("20",10).toString(16);
//八进制数字110转换成16进制
String str4 = new BigInteger("110",8).toString(16);
//二进制数字10100转换成10进制
String str5 = new BigInteger("10100",2).toString(10);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(str5);
}
}
二.BigDecimal类
(1)BigDecimal类的常用的几个构造方法
- BigDecimal(int):将int表示形式转换为BigDecimal对象
- BigDecimal(String) :将字符串表示形式转换为BigDecimal对象
- BigDecimal(double):将double表示形式转换为BigDecimal对象
(2)BigDecimal类常用方法
- add(BigDecimal):BigDecimal对象中的值相加,返回BigDecimal对象
- divide(BigDecimal):BigDecimal对象中的值相除,返回BigDecimal对象
- toString():将BigDecimal对象中的值转换成字符串
- subtract(BigDecimal):BigDecimal对象中的值相减,返回BigDecimal对象
- multiply(BigDecimal):BigDecimal对象中的值相乘,返回BigDecimal对象
- doubleValue():将BigDecimal对象中的值转换成双精度数
- floatValue():将BigDecimal对象中的值转换成单精度数
- longValue():将BigDecimal对象中的值转换成长整数
- intValue():将BigDecimal对象中的值转换成整数
package xun;
import java.math.*;
import org.omg.PortableServer.ID_ASSIGNMENT_POLICY_ID;
public class Myclass1 {
public BigDecimal mul(double num1,double num2)
{
BigDecimal b1= new BigDecimal(num1);
BigDecimal b2= new BigDecimal(num2);
return b1.multiply(b2);
}
public BigDecimal sub(double num1,double num2)
{
BigDecimal b1= new BigDecimal(Double.toString(num1));
BigDecimal b2= new BigDecimal(Double.toString(num2));
return b1.subtract(b2);
}
public BigDecimal div(double num1,double num2)
{
return div(num1,num2,8);
}
//定义除法,参数分别为除数,被除数,商后面小数点位数
public BigDecimal div(double num1,double num2,int b)
{
if(b<0)
{
System.out.println("ERROR:b必须大于0");
}
BigDecimal b1=new BigDecimal(Double.toString(num1));
BigDecimal b2=new BigDecimal(Double.toString(num2));
//调用除法方法,保留b位小数点并将结果四舍五入。
return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);
}
public static void main(String[] args) {
System.out.println("----BigDecimal类----");
//针对大数的处理类,加入了小数的概念,支持任何精度的定点数
BigDecimal b= new BigDecimal(2);
System.out.println("加法操作:"+b.add(new BigDecimal(2)));
Myclass1 a=new Myclass1();
System.out.println("自定义减法操作:"+a.mul(6.0,3.9));
System.out.println("自定义乘法操作:"+a.sub(8.0,3.9));
System.out.println("自定义除法操作:"+a.div(8.0,4.0,3));
System.out.println("自定义除法操作:"+a.div(8.0,2.0));
}
}