Java基础类库之数字操作

本文介绍了Java中Math类的使用,包括绝对值、四舍五入等数学运算方法,以及Random类生成随机数的应用。此外,还详细讲解了BigInteger和BigDecimal类在处理大整数和大浮点数运算中的作用。

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
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wayfreem

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值