Java常用类库-大数字操作类

作者: CodexBai | 来源:发表于2019-04-09 17:59 被阅读2次

如果基本的整数和浮点数精度不能够满足要求,Java在 java.math 包中提供了两个大数值操作类:BigIntegerBigDecimal。这两个类可以处理任意长度数字序列的数值。BigInteger实现任意精度的整数运算,BigDecimal 实现任意精度的浮点数运算。

BigInteger类

1. 字段概述
//大整数常量 1
System.out.println(BigInteger.ONE);
//大整数常量 10
System.out.println(BigInteger.TEN);
//大整数常量 0
System.out.println(BigInteger.ZERO);
2. 常用构造器
/*
* 常用构造器 BigInteger(String val)
* 将十进制字符串表示的大整数转成大整数
*/
System.out.println(new BigInteger("22222222"));
3. 常用方法
BigInteger biOne = new BigInteger("-56");
BigInteger biTwo = new BigInteger("89");
//返回大整数的double类型的值
System.out.println(biTwo.doubleValue());//89.0
//返回大整数的float类型的值
System.out.println(biTwo.floatValue());//89.0
//返回大整数的整数型值
System.out.println(biTwo.intValue());//89
//返回大整数的长整数型值
System.out.println(biTwo.longValue());//89

//返回大整数的绝对值
System.out.println(biOne.abs());//56
//返回大整数的最大公约数
System.out.println(biOne.gcd(biTwo));//1

//返回两个大整数的最大值
System.out.println(biOne.max(biTwo));//89
//返回两个大整数的最小值
System.out.println(biOne.min(biTwo));//-56


//返回两个大整数的和
System.out.println(biOne.add(biTwo));//33
//返回两个大整数的差
System.out.println(biOne.subtract(biTwo));//-145
//返回两个大整数的积
System.out.println(biOne.multiply(biTwo));//-4984
//返回两个大整数的商
System.out.println(biTwo.divide(biOne));//-1
//两个大整数求模
System.out.println(biOne.mod(biTwo));//33
//返回两个大整数取余
System.out.println(biOne.remainder(biTwo));//-56
//返回当前大整数的次方
System.out.println(biOne.pow(2));//3136

//返回两个大整数的按位与的结果
System.out.println(biOne.and(biTwo));//72
//返回两个大整数的按位或
System.out.println(biOne.or(biTwo));//-39
//返回两个大整数与非的结果
System.out.println(biOne.andNot(biTwo));//-128
//返回两个大整数的异或
System.out.println(biOne.xor(biTwo));//-111
//返回当前大整数的相反数
System.out.println(biOne.negate());//56
//返回当前大整数的非
System.out.println(biOne.not());//55

BigDecimal类

BigDecimal 用来对超过16位有效位的数进行精确的运算。

1. 字段概述
/*
 * 使用setScale()方法格式化小数点
 */
BigDecimal bd = new BigDecimal(12.2565);
//值为 1
System.out.println(BigDecimal.ONE);
//值为 10
System.out.println(BigDecimal.TEN);
//值为 0
System.out.println(BigDecimal.ZERO);
//舍入模式:向正无穷大取整
System.out.println(bd.setScale(2, BigDecimal.ROUND_CEILING));
//舍入模式:向0取整
System.out.println(bd.setScale(2, BigDecimal.ROUND_DOWN));
//舍入模式:向负无穷大取整
System.out.println(bd.setScale(3, BigDecimal.ROUND_FLOOR));
//四舍五入模式:向“邻近的”四舍五入,除非两个邻居的距离相等,在这种情况下,向下四舍五入
System.out.println(bd.setScale(3, BigDecimal.ROUND_HALF_DOWN));
//四舍五入模式:向“邻近的”四舍五入,除非两个相邻距离相等,这种情况下,向偶数四舍五入
System.out.println(bd.setScale(2, BigDecimal.ROUND_HALF_EVEN));
//四舍五入模式:向“邻近的”四舍五入,除非两个邻居的距离相等,在这种情况下,向上四舍五入
System.out.println(bd.setScale(2, BigDecimal.ROUND_HALF_UP));
//舍入模式从0开始舍入
System.out.println(bd.setScale(2, BigDecimal.ROUND_UP));
2. 常用构造器
/*
 * 将字符串形式表示的BigDecimal转成BigDecimal
 */
BigDecimal bd = new BigDecimal("0.256548");
System.out.println(bd);
3. 常用方法
BigDecimal bdOne = new BigDecimal("-10.5");
BigDecimal bdTwo = new BigDecimal("-1.5");
//加法
System.out.println(bdOne.add(bdTwo));
//减法
System.out.println(bdOne.subtract(bdTwo));
//乘法
System.out.println(bdOne.multiply(bdTwo));
//除法
System.out.println(bdTwo.divide(bdOne, 2, BigDecimal.ROUND_HALF_UP));
//求余
System.out.println(bdTwo.remainder(bdOne));
//最大数
System.out.println(bdOne.max(bdTwo));
//最小数
System.out.println(bdOne.min(bdTwo));
//绝对值
System.out.println(bdOne.abs());
//相反数
System.out.println(bdOne.negate());

相关文章

  • Java常用类库-大数字操作类

    如果基本的整数和浮点数精度不能够满足要求,Java在 java.math 包中提供了两个大数值操作类:BigInt...

  • Java类库

    Java常用类 Java8有217个包,4240个类,主要是java,javax,org三个包。 数字相关类 整数...

  • 初识Java(Java数字处理类-大数字运算)

    一、大数字运算 在 Java 中提供了大数字的操作类,即 java.math.BigInteger 类与 jav...

  • 大数字运算

    在Java中提供了大数字的操作类,即java.math.BigInteger类与java.math.BigDeci...

  • Java数字操作类

    导语 数学操作类的使用,其中BigInteger、BigDecimal可以操作大数字。最下面是重点,实现准确的四舍...

  • collections相关的数据结构及API

    1、列举几个Java Collection类库中的常用类 此处应该有Collection类图。 Collectio...

  • Java常用类库-Calendar类

    Calendar 类 是一个为提供在特定时间点和一组日历字段(如年、月、日、时、分、秒等)之间转换,以及操作日历字...

  • Java常用类库-Date类

    Date 类 在 java.util 包中,因此在使用 Date 类时需要导入该包。Date 类 表示特定的时间瞬...

  • Java常用类库-SimpleDateFormat类

    SimpleDateFormat 类 是DateFormat 类 的子类,其实一个具体的类,用于格式化和解析日期。...

  • Java常用类库-DateFormat类

    DateFormat 类 是一个用于格式化日期/时间子类的抽象类,其在 java.text 包中。日期/时间格式化...

网友评论

    本文标题:Java常用类库-大数字操作类

    本文链接:https://www.haomeiwen.com/subject/daobiqtx.html