开发者学堂课程【Java 高级编程:大数字处理类】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/328
大数字处理类
内容介绍:
1.大数字处理类的作用
2. 两种大数字处理类及其构造
3. 大数字类
4. 范例:使用 BigInteger 进行四则运算
5. divide AndRemainder(求余除法)
6.大数字处理类的使用范围
7. 范例:使用 BigDecimal 计算
8. 除法计算
9. 使用 BigDecimal 实现四舍五入处理
10. Math 与大数字处理类的区别
大数字处理类的作用:
大数字处理类可以实现海量数字的计算
两种大数字处理类及其构造:
BigInteger 类构造:public BigInteger(String val);
BigDecimal 类构造:public BigDecimal(String val);
大数字类
范例:使用 BigInteger 进行四则运算
package cn.mldn.demo;
import java.math.BigInteger;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
BigIntegerbigA = new
BigInteger("234134234234234234")
BigInteger bigB = new BigInteger("23423423");
System.out.println("加法操作:"+bigA.add(bigB));
System.out.println("减法操作:*+bigA.subtract(bigB));
System.out.println["乘法操作:"+bigA.multiply(bigB)D;
System.out.println("除法操作:"+bigA.divide(bigB));
需要注意的是,虽然提供有大数字类处理方法,但仍然需要考虑性能问题
divide AndRemainder(求余除法)
求余:Public BigInteger[]divide AndRemainder(BigInteger val)
数组第一个元素为商,第二个为余数
范例:求余除法
package cn.mldn.demo;
import java. math. BigInteger;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
BigIntegerbigA = new BigInteger("234234234234234234");
BigInteger bigB = new BigInteger("23423423");
BigInteger result [] = bigA.divideAndRemainder(bigB);
System.out.println("商:"+result[0]+"、余数:"+result[1]);
}
}
大数字处理类的使用范围
如果在计算时没有超过基本数据类型所包含的位数强烈不建议使用大数字处理类方法,因为性能很低,
范例:使用 BigDecimal 计算
package cn.mldn.demo;
import java.math.BigDecimal;
public class JavaAPIDemo {
public static void main(string[] args) throws Exception {
BigDecimalbigA = new
BigDecimal("32890234890");
BigDecimal bigB = new BigDecimal("1892039");
System.out.println("加法计算:"+bigA.add(bigB));
BigDecimal result [] = bigA.divideAndRemainder(bigB);System.out.println("除法计算,商,"+result[e]+“、余数,"+result[1]);
}
}
除法计算:
public BigDecimal divide(BigDecimal divisor,int scale,RoundingMode roundingMode)
使用 BigDecimal 实现四舍五入处理
package cn.mldn.demo;
import java.math.BigDecimal;
import java. math. RoundingMode;
class MathUtil {
privateMathutil() {}
/**
实现数据的四舍五入操作
*@param num 要进行四舍五入操作的数字
@param scale 四舍五入保留的小数位数
@return 四舍五入处理后的结果
public static double round (double num, int scale) {
return new BigDecimal(num).divide(new BigDecimal(1.0),scale,RoundingMode.HALF_UP).doubleVal
}
}
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
System.out.println(MathUtil.round(19.6352,2));
}
}
Math 与大数字处理类的区别
BigDecimal 与 Math 相比,Math 的处理由于使用的都是基本数据类型,所以性能高于大数字处理类 BigDecimal