数字格式化(DecimalFormat)
java.text.DecimalFormat格式化数字:
用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、科学计数法、百分数等。
通过使用该类可以为要输出的数字加上单位或控制数字的精度。
一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。
double pi = 3.1415927; // 圆周率
// 取一位整数
System.out.println(new DecimalFormat("0").format(pi));// 3
// 取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));// 3.14
// 取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
// 取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));// 3
// 以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));// 314.16%
long c = 299792458;// 光速
// 显示为科学计数法,并取五位小数
System.out.println(new DecimalFormat("#.#####E0").format(c));// 2.99792E8
// 显示为两位整数的科学计数法,并取四位小数
System.out.println(new DecimalFormat("00.####E0").format(c));// 29.9792E7
// 每三位以逗号进行分隔。
System.out.println(new DecimalFormat(",###").format(c));// 299,792,458
// 将格式嵌入文本
System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(c));//光速大小为每秒299,792,458米。
Math类
Math类中提供了众多数学函数方法,
主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法,
这些方法都被定义为static形式,所以在程序中应用比较简便。
可以使用如下形式调用:Math.数学方法
在Math类中除了函数方法之外还存在一些常用数学常量,如圆周率、E等。
这些数学常量作为Math类的成员变量出现,调用起来也很简单。
可以使用如下形式调用:Math.PI Math.E
math类中三大取整函数区别
1.ceil 2.floor 3.round
1.ceil,意思是天花板,java中叫做向上取整,大于等于该数字的最接近的整数
例: math.ceil(13.2)=14
math.ceil(-13.2)=-13
2.floor,意思是地板,java中叫做向下取整,小于等于该数字的最接近的整数
例: math.floor(13.2)=13
math.floor(-13.2)=-14
3.round,最特殊,其实就是四舍五入
例: math.round(13.2)=13;math.round(13.5)=14
math.round(-13.2)=-13,math.round(-13.5)=-13
//abs求绝对值
System.out.println(Math.abs(-10.4)); // 10.4
//max 两个中返回大的值
System.out.println(Math.max(-10.1, -10)); // -10.0
System.out.println(Math.max(10.7, 10)); // 10.7
随机数
Math.random 取得一个大于或者等于0.0小于不等于1.0(0<=X<1)的随机数
Math.random()方法只可以产生0~1之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数。
Random类
通过实例化一个Random对象创建一个随机数生成器。
语法如下:
Random r=new Random();
其中,r是指Random对象。
兩個构造方法
public Random()
public Random(long seed)
Random类中实现的随机算法是伪随机,也就是有规则的随机。
在进行随机时,随机算法的起源数字称为种子数(seed),
在种子数的基础上进行一定的变换,从而产生需要的随机数字。
再次强调:种子数只是随机算法的起源数字,和生成的随机数字的区间无关
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。
也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,
第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。
// 数值介于[0,1.0)之间
System.out.println(r.nextDouble());
//该值介于int的区间,也就是-231到231-1之间
System.out.println(r.nextInt());
//nextInt(int n) [0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
System.out.println(r.nextInt(10));
//同时执行r3和r4 执行次数一定是 随机数相同
Random r3 = new Random(10);
Random r4 = new Random(10);
System.out.println(r3.nextInt());
System.out.println(r4.nextInt());
大数字运算
BigInteger
BigInteger类中封装了多种操作,除了基本的加、减、乘、除操作之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作
BigInteger bigInteger1 = new BigInteger("9999999999999999999999999999999");
BigInteger bigInteger2 = new BigInteger("999999999999999999999999999999");
//加法运算
BigInteger newBig = bigInteger1.add(bigInteger2);
System.out.println(newBig);
//减法运算
newBig = bigInteger1.subtract(bigInteger2);
System.out.println(newBig);
// 乘法運算
newBig = bigInteger1.multiply(bigInteger2);
System.out.println(newBig);
//除法运算
newBig = bigInteger1.divide(bigInteger2);
System.out.println(newBig);
BigDecimal
BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小数的概念。
一般的float型和double型数据只可以用来做科学计算或工程计算
System.out.println(0.06 + 0.01); //0.06999999999999999
System.out.println(1.0 - 0.42); //0.5800000000000001
System.out.println(4.015 * 100); //401.49999999999994
System.out.println(303.1 / 1000); //0.30310000000000004
BigDecimal big1 = new BigDecimal("0.06");
BigDecimal big2 = new BigDecimal("0.01");
System.out.println(big1.add(big2));
big1 = new BigDecimal("1.0");
big2 = new BigDecimal("0.42");
System.out.println(big1.subtract(big2));
big1 = new BigDecimal("4.015");
big2 = new BigDecimal("100");
System.out.println(big1.multiply(big2));
big1 = new BigDecimal("303.1");
big2 = new BigDecimal("1000");
System.out.println(big1.divide(big2));