大数字操作类:BigInteger

大数字操作类:BigInteger(重点)

如果有两个非常大的数字(超过double范围)要数学加法运算,要怎么处理?
可以使用字符串处理数字,而后按照每个字符进行手工的处理数学计算,但是这样的复杂性太高了,为此java里面专门提供了一个java.math包。此包之中提供有两个大数字操作类:BigInteger(大整数操作类),BigDecimal(大小数操作类)
1.大整数操作类:BigInteger
BigInteger是Number的子类,但是在使用的时候肯定不用转为Number类型,在BigInteger类之中定义的构造方法:
public BigInteger(String val),因为数据量一大,肯定使用String表示
范例:完成四则运算
package classku;
import java.math.BigInteger;
public class BiqInteqera {
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
BigInteger bigA=new BigInteger("2435545434422445623443");
BigInteger bigB=new BigInteger("2435522445623443");
System.out.println(bigA.add(bigB));//jia
System.out.println(bigA.subtract(bigB));//jian
System.out.println(bigA.multiply(bigB));//cheng
System.out.println(bigA.divide(bigB));//chu
BigInteger  result[]=bigA.divideAndRemainder(bigB);
System.out.println("商:"+result[0]+",余数"+result[1]);
//System.out.println(bigA.pow(Integer.MAX_VALUE));圆外圆
}
}
以上只是针对BigInteger类做了一个演示,但是这样的代码意义不大,如果真遇见了数学问题,一定要去找数学公式第三方开发包


2.大小操作类:BigDecimal

此类的操作于BigInteger类基本四相同的,也提供有基本的数学计算,但是与这些数学计算相比,BigDecimal类有一个非常重要的功能
Math类之中的round()方法进行四舍五入操作过程之中,采用的是所有小数点全部进位,没有小数位,这样的做法是不可取的
在BigDecimal类里面有一个除法方法操作: public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
第一个参数:被除数,此处也应该是BigDecimal类型;
第二个参数:保留的小数位数;
第三个参数:进位模式(public static final int ROUDN_HALF_UP).

范例:实现准确的四舍五入
package classku;
import java.math.BigDecimal;
class MyMath{
/**
* 四舍五入,将由用户输入要四舍五入操作的数据,同时设置保留小数位
* @param num 包含的是小数数据
* @param scale 保留小数位
* @return 处理好的四舍五入数据
*/
public static double round(double num,int scale) {
BigDecimal bigNum=new BigDecimal(num);//只有变为BigDecimal才可以调用divide()方法
BigDecimal result=bigNum.divide(new BigDecimal(1), scale,BigDecimal.ROUND_UP);
return result.doubleValue();
}
}
public class BigDecimala {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(MyMath.round(7809.653298, 2));
System.out.println(MyMath.round(7809.653298, 1));
System.out.println(MyMath.round(-13.5, 0));
}
}
此代码四在工作之中使用最多的四舍五入的

你可能感兴趣的:(java)