JAVA学习:数字处理类

1.数字处理类

DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、科学计数法、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。
在这里插入图片描述
在这里插入图片描述
例:

package Number;

import java.text.DecimalFormat;

public class DecimalFormatSimpleDemo {
	
	static void format(String pattern, double value) {
		DecimalFormat df = new DecimalFormat(pattern);
		System.out.println(value);
		System.out.println(pattern);
		System.out.println(df.format(value));
		System.out.println();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		format("####",123);
		format("###,###.###$",123456.789);
		format("0.00\u2030",0.097);

	}

}

结果如下:

123.0
####
123

123456.789
###,###.###$
123,456.789$

0.097
0.0097.00

2. 数字运算

2.1 Math类

在Math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法,这些方法都被定义为static形式,所以在程序中应用比较简便。可以使用如下形式调用:

math.数学方法

在Math类中除了函数方法之外还存在一些常用数学常量,如圆周率、E等。这些数学常量作为Math类的成员变量出现,调用起来也很简单。可以使用如下形式调用:

Math.PI
Math.E

在这里插入图片描述
使用math方法不需要导包。

public class Demo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("圆周率pi的值为:"+Math.PI);

	}

}
圆周率pi的值为:3.141592653589793

2.2 常用的数学运算方法

在Math类中的常用数学运算方法较多,大致可以将其分为4大类别,分别为三角函数方法、指数函数方法、取整函数方法以及取最大值、最小值和绝对值函数方法。
1.三角函数方法
2.指数函数方法
3.取整函数方法
4.取最大值、最小值、绝对值函数方法

package Number;

public class Demo {

	public static void main(String[] args) {
		//三角函数
		System.out.println("90度的正弦值:"+Math.sin(Math.PI/2));
		System.out.println("90度的正弦值:"+Math.cos(0));
		
		//指数运算
		System.out.println("e的平方值:"+Math.exp(2));
		System.out.println("以e为底的2的对数值:"+Math.log(2));
		System.out.println("以e为底的2的对数值:"+Math.log10(2));
		
		System.out.println("4的平方根:"+Math.sqrt(4));
		System.out.println("8的立方根:"+Math.cbrt(8));
		
		System.out.println("2的2次方:"+Math.pow(2, 2));
		System.out.println("2的5次方:"+Math.pow(2, 5));
		
		//比较运算
		System.out.println("4和8较大的是:"+Math.max(4, 8));
		System.out.println("4和8较小的是:"+Math.min(4, 8));
		System.out.println("-7的绝对值:"+Math.abs(-7));
		
		//四舍五入
		System.out.println("使用floor()方法的效果:"+Math.floor(2.5));
		System.out.println("使用round()方法的效果:"+Math.round(2.5));

	}

}

结果:

4的平方根:2.0
8的立方根:2.0
22次方:4.0
25次方:32.0
48较大的是:8
48较小的是:4
-7的绝对值:7
使用floor()方法的效果:2.0
使用round()方法的效果:3

3. 随机数

3.1 Math.random()方法

在Math类中存在一个random()方法,用于产生随机数字,这个方法默认生成大于等于0.0小于1.0的double型随机数,即0<=Math.random()<1.0,虽然Math.random()方法只可以产生0~1之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数。

在这里插入图片描述
使用Math类的random()方法也可以随机生成字符,可以使用如下代码生成a到z之间的字符。

(char)('a'+Math.random()*('z'-'a'+1));

通过上述表达式可以求出更多的随机字符,如A~Z之间的随机字符。若想生成任意两个字符之间的随机字符,可以通过以下语句实现:

(char)(char1+Math.random()*(char2-char1+1));

例子:

package Number;

public class Demo {
	
	public static char GetRandomChar(char char1,char char2) {
		return (char)(char1+Math.random()*(char2-char1+1));
	}

	public static void main(String[] args) {
		//获取a~z之间的随机字符
		System.out.println("任意小写字符:"+GetRandomChar('a','z'));
		//获取A~Z之间的随机字符
		System.out.println("任意大写字符:"+GetRandomChar('A','Z'));
		//获取0~9之间的随机字符
		System.out.println("0~9任意数字:"+GetRandomChar('0','9'));
		
	}

}

结果:

任意小写字符:q
任意大写字符:F
0~9任意数字:5

例2:

package Number;

public class Demo {

	public static void main(String[] args) {
		for(int i=0;i<10;i++) {
			System.out.println(Math.random());
		}
	}

}

结果:

0.953028952172099
0.8073209285277249
0.693818706000683
0.5928218051688678
0.4828666772943693
0.28497742942583826
0.9522642873937066
0.3076296214635281
0.9172152539442813
0.5716496819086655

小游戏:

package Number;

import java.util.Scanner;

public class Demo {

	public static void main(String[] args) {
		System.out.println("---猜数字---");
		int num = (int)(Math.random()*100);
		int guess;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入猜测的数字:");
		guess = sc.nextInt();
		while(guess!=num) {
			if(guess<num) {
				System.out.println("太小了,重新输入!");
				guess = sc.nextInt();
			}else {
				System.out.println("太大了,重新输入!");
				guess = sc.nextInt();
			}
		}
		
		System.out.println("猜对了,数字是:"+num);
		sc.close()
	}

}

结果:

---猜数字---
请输入猜测的数字:
44
太小了,重新输入!
66
太大了,重新输入!
55
太大了,重新输入!
50
太大了,重新输入!
46
猜对了,数字是:46

3.2 Random类

除了Math类中的random()方法可以获取随机数之外,在Java中还提供了一种可以获取随机数的方式,那就是java.util.Random类。可以通过实例化一个Random对象创建一个随机数生成器。
语法如下:

Random r=new Random();

其中,r是指Random对象。
以这种方法实例化对象时,Java编译器将以系统当前时间作为随机数生成器的种子。用户也可以在实例化Random类对象时,设置随机数生成器的种子。语法如下:

Random.r = new Random(seedValue);

其中,r是Random类对象,seedValue是随机数生成器的种子。

在Random类中提供了获取各种数据类型随机数的方法,常用的几种如下:

public int nextInt():返回一个随机数

public int nextInt(int n):返回大于等于0且小于n的随机整数

public long nextLong():返回一个随机长整数型

public boolean nextBoolean():返回一个随机布尔型

public float nextFloat():返回一个随机浮点型

public double nextDouble():返回一个随机双精度型值

public double nextGaussian():返回一个概率密度为高斯分布的双精度值

4. 大数字运算

4.1 BigInteger

在BigInteger类中封装了多种操作,除了基本的加、减、乘、除操作之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。

当使用BigInteger类时,可以实例化一个BigInteger对象,并自动调用相应的构造函数。BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。

语法如下:

public BigInteger(String val);

其中,val是十进制字符串。

如果将2转换为BigInteger类型,可以使用以下语句进行初始化操作:

BigInteger twoInstance = new BigInteger("2")

一些常用的运算方法:

package Number;

import java.math.BigInteger;

public class Demo {

	public static void main(String[] args) {
		BigInteger i1 = new BigInteger("99");
		BigInteger i2 = BigInteger.valueOf(999999L);

		System.out.println("加法\t" + i1.add(new BigInteger("1")));
		System.out.println("减法\t" + i1.subtract(new BigInteger("2")));
		System.out.println("乘法\t" + i1.multiply(new BigInteger("999")));
		System.out.println("除法\t" + i1.divide(new BigInteger("3")));
		System.out.println("求余\t" + i1.remainder(new BigInteger("5")));

		System.out.println("求幂\t" + i1.pow(10));
		System.out.println("比较大小\t" + i1.compareTo(i2));
		System.out.println("比较相等\t" + i1.equals(i2));
		System.out.println("取最大值\t" + i1.max(i2));
		System.out.println("取最小值\t" + i1.min(i2));

		// 取最大公约数
		BigInteger a = new BigInteger("12345");
		BigInteger b = new BigInteger("123");
		System.out.println(a + "与" + b + "的最大公约数是:" + a.gcd(b));

	}

}

结果:

加法	100
减法	97
乘法	98901
除法	33
求余	4
求幂	90438207500880449001
比较大小	-1
比较相等	false
取最大值	999999
取最小值	99
12345123的最大公约数是:3

4.2 BigDecimal

BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小数的概念。一般的float型和double型数据只可以用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到java.math.BigDecimal类。

BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值。

构造方法如下:

BigDecimal d = new BigDecimal("3.14");
BigDecimal d = new BigDecimal(3.14);
BigDecimal d = BigDecimal.valueOf(3.14);

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值