7.3.3 Math类
Java 提供了最简单加、减、乘、除、取模等基本运算。同时还提供了Math类来进行更复杂的数学运算。
static abs(Xxx xx):将基本数据类型转换成其绝对值返回。
static max(Xxx a,Xxx b):返回两个值中较大的一个
static min(Xxx a,Xxx b):返回两个值中较小的一个
static pow(double a,double b):返回第一个参数的第二个参数次幂的值。
static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
public static void main(String[] args) throws Exception {
//取某一个范围内的随机数
for(int i=0;i<5;i++){
System.out.println((int)(Math.random()*100));
}
}
一个小例题:
如何取得给定任意范围内的随机数?
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int start = scan.nextInt();
int end = scan.nextInt();
System.out.println(getRan(start,end));
}
public static int getRan(int start,int end){
int number = (int)(Math.random()*(end-start+1)+start);
return number;
}
7.3.4 Random类
Random类专门用于生成一个随机数。主要方法为:nextXxx(Xxx xxx)
public Random():创建一个新的随机数生成器。
Random(long seed):使用单个 long 种子创建一个新的随机数生成器。给定种子后,每次得到的随机数是相同的。
static Xxx nextInt(int n):返回该类型的一个随机数。返回的范围是[0,n)范围内的随机数。
static Xxx nextInt():返回该类型的一个随机数。返回的范围是int范围内的随机数。
7.3.5 BigDecimal类
double、float浮点数在进行数据基本运算时会发生数据丢失现象,这种情况不仅仅是在Java语言中,在其他语言中同样存在。例如:
public static void main(String[] args) throws Exception{
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);
}
Java提供了 BigDecimal 类,用于处理进行基本运算发生的数据丢失问题。
使用BigDecimal构造器创建对象时,建议优先使用 String 类型对象作为参数传入进行初始化。
举例: BigDecimal decimal = new BigDecimal(“12.5”);
BigDecimal类提供了add()、subtract()、multiply()、divide()、pow(int n)、等方法对精确 浮点数 进行常规算术运算。
举例1:
public static void main(String[] args) throws Exception{
BigDecimal b1 = new BigDecimal("0.05");
BigDecimal b2 = new BigDecimal("0.01");
System.out.println(b1.add(b2).floatValue());
b1 = new BigDecimal("1.0");
b2 = new BigDecimal("0.42");
System.out.println(b1.subtract(b2).floatValue());
b1 = new BigDecimal("4.015");
b2 = new BigDecimal("100");
System.out.println(b1.multiply(b2).floatValue());
b1 = new BigDecimal("123.3");
b2 = new BigDecimal("100");
System.out.println(b1.divide(b2).floatValue());
}