Java基础类库之数字操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18948359/article/details/85270404

Math 类

Math 就是一个主们进行数字计算的操作类,该类提供了一系列的数学就当方法。在 Math 类中提供的一切方法都是 static 方法。下面介绍一下比较特殊的方法:

public class Demo {
	public static void main(String[] args) {
		// 绝对值
		System.out.println(Math.abs(-1));	// 1
		
		System.out.println(Math.round(15.5));   // 16
		System.out.println(Math.round(15.6));   // 16
		System.out.println(Math.round(-15.5)); // -15
		System.out.println(Math.round(-15.51)); // -16
	}
}

从上面的输出结果,可以发现数据小数位>0.5才进位,<=0.5不进位

Random 类

这类的主要功能是取得随机数的操作类。

随机产生10个0~99正整数

import java.util.Random;
 
public class Demo {
	public static void main(String[] args) {
		Random ran = new Random();
		for (int i = 0; i < 10; i++) {
			System.out.print(ran.nextInt(100) + " ");
		}
	}
}

输出结果:

15 55 30 5 43 74 23 42 58 76 

通过 Random 类实现 36选7的程序

最大值为36,所有边界的数值为37,并且里面不能够有0或者重复的数据。

import java.util.Arrays;
import java.util.Random;
 
public class Demo {
	public static void main(String[] args) {
		Random ran = new Random();
		int[] data = new int[7];    //选出来的数据数组
		int foot = 0;
		while (foot < 7) {
			int rnum = ran.nextInt(36);     // 最大值为 37
			if (!(isRepeat(data, rnum))) {
				data[foot++] = rnum;
			}
		}
		Arrays.sort(data);  // 对数据进行排序
		System.out.print("36选7:");
		for (int i = 0; i < data.length; i++) {
			System.out.print(data[i] + " ");
		}
 
	}
 
	public static boolean isRepeat(int[] temp, int num) {
		if (num == 0) {
			return true;
		}
		for (int i = 0; i < temp.length; i++) {
			if (temp[i] == num) {
				return true;
			}
		}
		return false;
	}
}

结果输出:

3672 4 6 9 19 21 32 

大整数操作类

BigInteger类

如果我们需要操作的数据值很大,那么我们首先想到的应该是 double ,如果我们使用计算值超过了 double,那么现在我们可以使用 BigInteger(大整形) 或者 BigDecimal(大浮点型)了。

import java.math.BigInteger;
 
public class Demo {
	public static void main(String[] args) {
		BigInteger bigA = new BigInteger("35564564178895");
		BigInteger bigB = new BigInteger("16544664623186");
		System.out.println("加法:" + bigA.add(bigB));
		System.out.println("减法:" + bigA.subtract(bigB));
		System.out.println("乘法:" + bigA.multiply(bigB));
		System.out.println("除法:" + bigA.divide(bigB));
	}
}

控制台输出:

加法:52109228802081
减法:19019899555709
乘法:588403786809592158668859470
除法:2

BigDecimal 类

BigInteger 不能够保存小数,而BigDemial 可以保存小数数据。一般我们使用该类在做为我们四舍五入的操作。

BigDemial中提供的一个方法:
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

  • BigDecimal divisor:被除数
  • int scale:保留的小数位
  • int roundingMode: 进位模式。(public static final int ROUND_HALF_UP)
import java.math.BigDecimal;

class MyMath {
	public static double divide(double num, int scal) {
		BigDecimal bigA = new BigDecimal(num);
		BigDecimal bigB = new BigDecimal(1);
		return bigA.divide(bigB, scal, BigDecimal.ROUND_HALF_UP).doubleValue();
	}
}

public class Demo {
	public static void main(String[] args) {
		System.out.println(MyMath.divide(19.48789789, 3));	// 19.488
		System.out.println(MyMath.divide(-15.5, 0));		// -16.0
		System.out.println(MyMath.divide(15.5, 0));			// -16
	}
}

猜你喜欢

转载自blog.csdn.net/qq_18948359/article/details/85270404