一、数字格式化
数字的格式化在解决实际问题时使用非常普遍,如表示某超市商品价格,需要保留两位有效数字。Java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据,在Java中使用java.text.DecimalFormat格式化数字,将着重分析DecimalFormat类。
DecimalFormat类中的特色字符
二、数学运算
1、Math类
在Math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法。
Math.PI
Math.E
2、常用数学运算方法
(1)三角函数方法
public static double sin(double a):返回三角的正弦。
public static double cos(double a):返回三角的余弦。
public static double tan(double a):返回三角的正切。
public static double sin(double a):返回三角的反正弦。
public static double acos(double a):返回三角的反余弦。
public static double atan(double a):返回三角的反正切。
public static double toRadians(double angdeg):将角度转换为弧度。
public static double toDegrees(double a):将弧度转换为角度。
package bao;
public class Demo1 {
public static void main(String[] args) {
System.out.println("90°的正弦值:"+Math.sin(Math.PI/2));
System.out.println("0°的余弦值:"+Math.cos(0));
System.out.println("60°的正切值:"+Math.tan(Math.PI/3));
System.out.println("1的反正弦值:"+Math.asin(1));
System.out.println("0°的反余弦值:"+Math.acos(0));
System.out.println("60°的反正切值:"+Math.atan(Math.PI/3));
System.out.println("60°的弧度值:"+Math.toRadians(60.0));
System.out.println("π/2的角度值:"+Math.atan(Math.PI/2));
}
}
/*输出结果:
90°的正弦值:1.0
0°的余弦值:1.0
60°的正切值:1.7320508075688767
90°的反正弦值:1.5707963267948966
0°的反余弦值:1.5707963267948966
60°的反正切值:0.808448792630022
60°的弧度值:1.0471975511965976
π/2的角度值:1.0038848218538872
*/
(2)指数函数方法
exp(double a):取e^a。
public static double log(double a):用于自然对数。
public static double log10(double a):用于取底数为10的对数。
public static double sqrt(double a):用于取a的平方根,其中a的值不能为负值。
public static double cbrt(double a):用于取a的立方根。
public static double pow(double a):用于取a的b次方。
(3)取整函数方法
public static double ceil(double a):返回大于等于参数的最小整数。
public static double floor(double a):返回小于等于参数的最大整数。
public static double rint(double a):返回参数最近的整数,如果两个人同为整数且同样接近则结果去偶数。
public static int round(floata):将参数加上0.5后返回与参数最近的整数。
public static long round(double a):将参数加上0.5后返回与参数最近的整数,然后强制转换成长整数。
(4)取最大值、最小值、绝对值函数方法
public static int max (int a,intb):取a与b之间的最大值。
public static int min(int a,intb):取a与b之间的最小值。
public static int abs (int a):取a的绝对值。
三、随机数
1、Math.random()方法
在Math类中存在一个random()方法,用于产生随机数字,这个方法默认生成大于等于0.0小于1.0的double型随机数,即0<=Math.random()<1.0,虽然Math.random()方法只可以产生0~1之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数。
package bao;
public class Demo1{
public static int aacc(double a,double b) {
int ss=(int)a+(int)(Math.random()*(b-a));//a与b之间的随机数
if(ss%2==0) { //判断随机数是否为偶数
return ss;
}else {
return ss+1;
}
}
public static void main(String[] args) {
System.out.println("任意一个13至69之间的偶数:"+aacc(13,69));
}
}
/*输出结果:
任意一个13至69之间的偶数:38
*/
(char)(a+Math.random()*(b-a+1))
package bao;
public class Demo1{
public static char aacc(char a,char b) {
return (char)(a+Math.random()*(b-a+1));//a与b之间的随机数
}
public static void main(String[] args) {
System.out.println("获取任意小写字符:"+aacc('a','z'));
System.out.println("获取任意大写字符:"+aacc('A','Z'));
System.out.println("获取任意0至9的字符:"+aacc('0','9'));
}
}
/*输出结果:
获取任意小写字符:u
获取任意大写字符:Q
获取任意0至9的字符:6
*/
2、Random类
除了Math类中的random()方法可以获取随机数之外,在Java中还提供了一种可以获取随机数的方式,那就是java.util.Random类。可以通过实例化一个Random对象创建一个随机数生成器。 语法如下:
Random r=new Random();
r:Random对象。
Random r=new Random(seedValue);
r:Random对象。
seedValue:随机数生成器的种子
Random类中的常用方法:
public int nextInt():返回一个随机整值。
public int nextInt(int n):返回大于等于0且小于n的随机整值。
public int nextLong():返回一个随机长整值。
public int nextBoolean():返回一个随机布尔值。
public int nextFloat():返回一个随机浮点型值。
public int nextDouble():返回一个随机双精度型值。
public int nextGaussian():随机返回一个概率密度为高斯分布的双精度值。
package bao;
import java.util.Random;
public class Demo1{
public static void main(String[] args) {
Random r =new Random();
System.out.println("返回一个随机整值:"+r.nextInt());
System.out.println("返回大于等于0且小于n的随机整值:"+r.nextInt(10));
System.out.println("返回一个随机长整值:"+r.nextLong());
System.out.println("返回一个随机布尔值:"+r.nextBoolean());
System.out.println("返回一个随机浮点型值:"+r.nextFloat());
System.out.println("返回一个随机双精度型值:"+r.nextDouble());
System.out.println("随机返回一个概率密度为高斯分布的双精度值:"+r.nextGaussian());
}
}
/*输出结果:
返回一个随机整值:1629274789
返回大于等于0且小于n的随机整值:2
返回一个随机长整值:1105171878119653934
返回一个随机布尔值:true
返回一个随机浮点型值:0.38336182
返回一个随机双精度型值:0.9168877185079158
随机返回一个概率密度为高斯分布的双精度值:-0.4387153733374504
*/
四、大数字运算
1、BigInteger
在BigInteger类中封装了多种操作,除了基本的加、减、乘、除操作之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。
public BigInteger(String val)
BigInteger w=new BigInteger(“2”)
BigInteger类中的常用运算方法
pulic BigInteger add(BigInteger val):做加法运算。
pulic BigInteger subtract(BigInteger val):做减法运算。
pulic BigInteger multiply(BigInteger val):做乘法运算。
pulic BigInteger divide(BigInteger val):做除法运算。
pulic BigInteger remainder(BigInteger val):做取余法运算。
pulic BigInteger max(BigInteger val):返回较大值。
pulic BigInteger min(BigInteger val):返回较小值。
2、BigDecimal
BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小数的概念。一般的float型和double型数据只可以用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到java.math.BigDecimal类。
pulic BigDecimal add(BigDecimal val):做加操作。
pulic BigDecimal subtract(BigDecimal val):做减法操作。
pulic BigDecimal multiply(BigDecimal val):做乘法操作。
pulic BigDecimal divide(BigDecimal val):做除法操作。
BigDecimal类中的divide()方法
模 式 | 含 义 |
ROUND_UP | 商的最后一位数如果大于0,则向前进位,正负数都如此 |
ROUND_DOWN | 商的最后一位数,都省略 |
ROUND_CEILING | 如果是正数按照ROUND_UP 处理;如果是负数按照ROUND_DOWN。 |
ROUND_FLOOR | 与ROUND_CEILING 模式相反,如果是正数按照ROUND_DOWN处理;如果是负数按照ROUND_UP 。 |
ROUND_HALF_DOWN | 对商进行四舍五入操作,如果商的最后一位小于等于5,则舍去操作;如果商的最后一位大于等于5,进行进位操作。如:7.5≈8 |
ROUND_HALF_UP | 对商进行四舍五入操作,如果商的最后一位小于5,则舍去操作;如果商的最后一位大于等于5,进行进位操作。如:7.5≈8 |
ROUND_HALF_EVEN | 如果商的倒数第二位为奇数,则按照ROUND_HALF_UP处理;如果是偶数则ROUND_HALF_DOWN处理。如:7.5≈8,8.5≈8 |