一:相关数字类
–整数 Short, Int, Long
–浮点数 Float, Double
–大数类 BigInteger(大整数), BigDecimal(大浮点数)
–随机数类 Random
short,16位,2个字节,有符号的以二进制补码表示的整数–(-32768-32767, -2^15-2^15-1),默认值0
int, 32位,4个字节,有符号的以二进制补码表示的整数–(-2147483648--2147483647, -2^31-2^31-1),默认值0
long, 64位,8个字节,有符号的以二进制补码表示的整数–-9,223,372,036,854,775,808(-2^63)--9,223,372,036,854,775,807(2^63 -1),默认值0L
short a1=32767;
System.out.println(a1);
int b1=2147483647;
System.out.println(b1);
long c1=2147483647; //若是 在int范围类,会隐式转换
System.out.println(b1);
long c2=2147483648L; //若是 超出int范围类,必须在后面加上L,不然会报错The literal 2147483648 of type int is out of range
System.out.println(b1);
float,单精度,32位,4个字节,符合IEEE 754标准的浮点数,默认值0.0f。float的范围为1.40129846432481707e-45 to 3.40282346638528860e+38 (无论正负).
double,双精度,32位,4个字节,符合IEEE 754标准的浮点数,默认值0.0d。double的范围为4.94065645841246544e-324d to 1.79769313486231570e+308d (无论正负)
float和double都不能用来表示很精确的数
//float f=1.23; //错误,必须在后面加上f
float f=1.23f;
double d=4.56d;
double e=4.564667877777979464646; //正确,可以省略d
System.out.println(f); //1.23
System.out.println((double)f); //1.2300000190734863小转大,精度缺失
System.out.println((float)e); //4.5646677会截断
System.out.println(f==1.22999999999f); //true
System.out.println(f-1.2299999999f); //0.0
System.out.println(d==4.55999999999999999); //true
System.out.println(d-4.55999999999999999); //0.0
三:大数字类(重点)
(一)大整数类BigInteger:支持无限大整数运算
BigInteger b1=new BigInteger("123456789");
BigInteger b2=new BigInteger("987654321");
System.out.println(b1+"+"+b2+"="+b1.add(b2));
System.out.println(b1+"*"+b2+"="+b1.multiply(b2));
System.out.println(b1+"/"+b2+"="+b1.divide(b2));
System.out.println(b1+"-"+b2+"="+b1.subtract(b2));
System.out.println("min in b1 b2:"+b1.min(b2));
System.out.println("max in b1 b2:"+b1.max(b2));
System.out.println("b1==b2?:"+b1.equals(b2));
//求商取余,返回的是两个数据,用数组接收
BigInteger res[]=b2.divideAndRemainder(b1);
System.out.println(b1+"/"+b2+"="+res[0]+"......"+res[1]);
int flag=b1.compareTo(b2);
if(flag==0) {
System.out.println("b1==b2");
}else if(flag<0) {
System.out.println("b1<b2");
}else{
System.out.println("b1>b2");
}
(二)大浮点数BigDecimal:支持无限大小数运算
BigDecimal b1 = new BigDecimal("123456789.987654321"); // 声明BigDecimal对象
BigDecimal b2 = new BigDecimal("987654321.123456789"); // 声明BigDecimal对象
System.out.println("b1: " + b1 + ", b2:" + b2);
System.out.println("加法操作:" + b2.add(b1)); // 加法操作
System.out.println("减法操作:" + b2.subtract(b1)); // 减法操作
System.out.println("乘法操作:" + b2.multiply(b1)); // 乘法操作
//需要指定位数,防止无限循环,或者包含在try-catch中
System.out.println("除法操作:" + b2.divide(b1,10,BigDecimal.ROUND_HALF_UP)); // 除法操作
System.out.println("最大数:" + b2.max(b1)); // 求出最大数
System.out.println("最小数:" + b2.min(b1)); // 求出最小数
int flag = b1.compareTo(b2);
if (flag == -1)
System.out.println("比较操作: b1<b2");
else if (flag == 0)
System.out.println("比较操作: b1==b2");
else
System.out.println("比较操作: b1>b2");
注意:尽量采用字符串赋值
System.out.println(new BigDecimal("2.3"));
System.out.println(new BigDecimal(2.3));
2.3
2.29999999999999982236431605997495353221893310546875
注意:除法需要指定位数,防止除不尽,无限循环。或者异常捕获
四:Random 随机数类
nextInt() 返回一个随机int
nextInt(int a) 返回一个[0,a)之间的随机int
nextDouble()返回一个[0.0,1.0]之间double
ints 方法批量返回随机数组
此外:Math.random() 返回一个[0.0,1.0]之间doub
(一)Random类
//第一种办法,采用Random类
Random rd=new Random();
System.out.println(rd.nextInt());
System.out.println(rd.nextInt());
System.out.println(rd.nextInt(100));
System.out.println(rd.nextInt(100));
System.out.println(rd.nextLong());
System.out.println(rd.nextDouble());
System.out.println(rd.nextBoolean());
System.out.println(rd.nextBoolean());
System.out.println(rd.nextFloat());
1742142671
-583003479
76
23
1726795845571005920
0.05085002528976956
true
true
0.3958646
(二)使用Math.random参数随机数
//第二种,生成一个范围内的随机数 例如0到时10之间的随机数
//Math.random[0,1)
System.out.println(Math.round(Math.random()*10));
(三)JDK8新增ints
//JDK 8 新增方法
rd.ints(); //返回无限个int类型范围内的数据
int[] arr = rd.ints(10).toArray(); //生成10个int范围类的个数。
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("=========================");
arr = rd.ints(5, 10, 100).toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("=========================");
arr = rd.ints(10).limit(5).toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
View Code
五:数字工具类java.lang.Math
绝对值函数abs
对数函数log
比较函数max、min
幂函数pow
四舍五入函数round等
向下取整floor
向上取整ceil
....