数字处理类
一、数字格式化
-
DecimalFormat类
DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。
public static void main(String[] args) {
double pi = 3.1415927;//圆周率
System.out.println(new DecimalFormat("0").format(pi)); //取一位整数(3)
System.out.println(new DecimalFormat("0.00").format(pi)); //取一位整数和两位小数(3.14)
System.out.println(new DecimalFormat("00.000").format(pi)); //取两位整数和三位小数,整数不足部分以0填补(03.142)
System.out.println(new DecimalFormat("#").format(pi)); //取所有整数部分(3)
System.out.println(new DecimalFormat("#.##%").format(pi)); //以百分比方式计数,并取两位小数(314.16%)
}
二、数学运算
Math数学运算类中提供了众多数学函数方法
-
常用的数学运算方法
-
三角函数方法
-
指数函数方法
-
取整函数方法
public static void main(String[] args) {
double pi = 3.1415927;//圆周率
System.out.println(Math.ceil(pi)); //向上取整
System.out.println(Math.floor(pi)); //向下取整
System.out.println(Math.rint(pi)); //返回与参数最接近的整数,如果同样接近则返回偶数
//...
}
-
取最大值、最小值、绝对值函数方法
public static void main(String[] args) {
System.out.println(Math.max(4,9)); //最大值
System.out.println(Math.min(4,9)); //最小值
System.out.println(Math.abs(-7)); //绝对值
//...
}
三、随机数
Java中主要提供了两种方式产生随机数
-
Math类的random()方法
-
Random类
-
Math.random()
//返回一个0~1之间的double型随机数
System.out.println(Math.random()); //x 比如:0.015764032150502705
(int)(Math.random()*n); //返回大于0小于n的随机数
m+(int)(Math.random()*n); //返回大于等于m且小于m+n的随机数
//产生2到32之间的随机数
public static void main(String[] args) {
int rangeMin = 2;
int rangeMax = 32;
int random = rangeMin + (int)(Math.random() * (rangeMax - rangeMin));
System.out.println(random);
}
//使用random方法也可以随机生成字符,比如生成a~z之间的字符
(char)('a' + Math.random() * ('z' - 'a' + 1));
public static void main(String[] args) {
System.out.println("任意小写字符" + (char)('a' + Math.random() * ('z' - 'a' + 1)));
System.out.println("任意大写字符" + (char)('A' + Math.random() * ('Z' - 'A' + 1)));
}
-
Random类
//通过实例化一个Random对象创建一个随机数生成器
Random r = new Random();
public static void main(String[] args) {
Random r = new Random();
System.out.println("随机产生一个整数" + r.nextInt());
System.out.println("随机产生一个0到9的整数" + r.nextInt(10));
System.out.println("随机产生一个布尔型的值" + r.nextBoolean());
System.out.println("随机产生一个双精度型的值" + r.nextDouble());
System.out.println("随机产生一个浮点型的值" + r.nextFloat());
}
四、大数字运算
Java中提供了两个大数字操作类用于高精度计算
-
java.math.BigInteger
-
java.math.BigDecimal
-
BigInteger
BigInteger支持任意精度的整数,在BigInteger类中封装了多种操作,比如加、减、乘、除、绝对值、相反数、最大公约等
BigInteger n = new BigInteger("2"); //将十进制的2转换为BigInteger形式,参数的双引号不能省略,因为参数是以字符串的形式存在的
public static void main(String[] args) {
BigInteger bigInstance = new BigInteger("4"); //实例化一个大数字
System.out.println("加法操作:" + bigInstance.add(new BigInteger("2")));
System.out.println("减法操作:" + bigInstance.subtract(new BigInteger("2")));
System.out.println("乘法操作:" + bigInstance.multiply(new BigInteger("2")));
System.out.println("除法操作:" + bigInstance.divide(new BigInteger("2")));
System.out.println("除以3的商:" + bigInstance.divideAndRemainder(new BigInteger("3"))[0]);
System.out.println("除以3的余数:" + bigInstance.divideAndRemainder(new BigInteger("3"))[1]);
//...
}
-
BigDecimal
BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("4");
System.out.println("加法操作:" + bigDecimal.add(new BigDecimal("2")));
System.out.println("减法操作:" + bigDecimal.subtract(new BigDecimal("2")));
System.out.println("乘法操作:" + bigDecimal.multiply(new BigDecimal("2")));
System.out.println("除法操作,商小数点后保留4位,并对结果进行四舍五入操作:" + bigDecimal.divide(new BigDecimal("3"), 4, BigDecimal.ROUND_HALF_UP)); //1.3333
//...
}