Java学习笔记っ碎片化代码Java

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

2019-04-09  本文已影响2人  CodexBai

如果基本的整数和浮点数精度不能够满足要求,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());
上一篇 下一篇

猜你喜欢

热点阅读