数字处理类(笔记)

数字格式化

在Java中没有格式化的数据遵循以下原则:

  • 如果数据绝对值大于0.001并且小于10000000,Java将以常规小数形式表示。
  • 如果数据绝对值小于0.001并且小于10000000,使用科学记数法表示

Java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据,在Java中使用java.text.DecimalFormat格式化数字,这里着重讲DecimalFormat类。
一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。
在这里插入图片描述

import java.text.DecimalFormat;

public class DecimalFormatSimpleDemo {
	
	//使用实例化对象时设置格式化模式
	static public void SimgleFormat(String pattern, double value) {
		DecimalFormat myFormat = new DecimalFormat(pattern);  //实例化DecimalFormat对象
		String output = myFormat.format(value);  //将数字进行格式化
		System.out.println(value+" "+pattern+" "+output);
	}
	
	//使用applyPattern()方法对数字进行格式化
	static public void UseApplyPatternMethodFormat(String pattern, double value){
		DecimalFormat myFormat = new DecimalFormat();
		myFormat.applyPattern(pattern);
		System.out.println(value+" "+pattern+" "+myFormat.format(value));
	}
	
	public static void main(String[] args) {
		SimgleFormat("###,###.###", 123456.789);
		SimgleFormat("00000000.###kg", 123456.789);
		SimgleFormat("000000.000", 123.789);
		
		UseApplyPatternMethodFormat("#.###%", 0.789);
		UseApplyPatternMethodFormat("##.###", 123456.789);
		UseApplyPatternMethodFormat("0.00\u2030", 0.789);
	}

}

结果:

123456.789 ###,###.### 123,456.789
123456.789 00000000.###kg 00123456.789kg
123.789 000000.000 000123.789
0.789 #.###% 78.9%
123456.789 ##.### 123456.789
0.789 0.00789.00

数学运算

Math类

Math.数学方法
Math.PI
Math.E

1. 三角函数方法

在这里插入图片描述
以上每个方法的参数和返回值都是double型的。

2. 指数函数方法

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

3. 取整函数方法

在这里插入图片描述

4. 取最大值、最小值、绝对值函数方法

在这里插入图片描述

随机数

Java中主要提供两种产生随机数的方式,分别为调用Math类的random()方法和Random类提供的产生各种数据类型随机数方法。

1. Math.random()方法

默认生成>=0.0且<1.0的double型随机数,即0<=Math.random()<1.0
例:在类中编写GetRandomChar()方法产生随机字符,并在主方法中输出该字符。

public class MathRandomChar{
	//定义获取任意字符之间的随机字符
	public static char GetRandomChar(char cha1, char cha2){
		return (char) (cha1 + Math.random()*(cha2-cha1+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'));
	}
}

2. Random类

java.util.Random类,可以通过实例化一个Random对象创建一个随机数生成器。
也可以在实例化Random类对象时,设置随机数生成器种子:
Random r = new Random(seedValue);
**seed:**随机生成器的种子
在Random类中提供了获取各种数据类型随机数的方法,如:

  • public int nextInt(): 返回一个随机整数
  • public int nextInt(int n): 返回一个大于等于0且小于n的随机整数
  • public long nextLong(): 返回一个随机长整型值
  • public boolean nextBoolean(): 返回一个随机布尔型值
  • public float nextFloat(): 返回一个随机浮点型值
  • public double nextGaussian(): 返回一个概率密度为高斯分布的双精度值

大数字运算

1. BigInteger

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

2. BigDecimal

在这里插入图片描述
在上述方法中,BigDecimal类中divide()方法有多种设置,用于返回商末位小数点的处理,这些模式的名称与含义如下表:
在这里插入图片描述

import java.math.BigDecimal;

public class BigDecimalDemo{
	static final int location=10;
	/**
	 * 定义加法方法,参数为加数与被加数
	 * 
	 * @param value1
	 *           相加的第一个数
	 *@param value2
	 *				相加的第二个数
	 *@return 两数之和
	 */
	public BigDecimal add(double value1, double value2){
		//实例化Dcimal对象
		BigDecimal b1 = new BigDecimal(Double.toString(value1));
		BigDecimal b2 = new BigDecimal(Double.toString(value2));
		return b1.add(b2);//调用加法方法
	}
	
	/**
	 * 定义减法方法,参数为减数与被减数
	 * 
	 * @param value1
	 *           被减数
	 *@param value2
	 *			 减数
	 *@return 运算结果
	 */
	public BigDecimal sub(double value1, double value2){
		//实例化Dcimal对象
		BigDecimal b1 = new BigDecimal(Double.toString(value1));
		BigDecimal b2 = new BigDecimal(Double.toString(value2));
		return b1.subtract(b2);//调用减法方法
	}
	
	/**
	 * 定义除法方法,参数为除数与被除数
	 * 
	 * @param value1
	 *           被除数
	 *@param value2
	 *			 除数
	 *@return 运算结果
	 */
	public BigDecimal div(double value1, double value2){
		return div(value1, value2, location);//调用自定义除法方法
	}
	
	//定义除法方法,参数分别为除数与被除数以及商小数点后的位数
	public BigDecimal div(double value1, double value2, int b){
		//实例化Dcimal对象
		if(b<0){
			System.out.println("b must bigger than 0");
		}
		BigDecimal b1 = new BigDecimal(Double.toString(value1));
		BigDecimal b2 = new BigDecimal(Double.toString(value2));
		//调用除法方法,商小数点后保留b位,并将结果进行四舍五入操作
		return b1.divide(b2, b, BigDecimal.ROUND_HALF_UP);
	}
	
	public static void main(String[] args){
		BigDecimalDemo b = new BigDecimalDemo();
		System.out.println("两个数字相加结果:"+b.add(-7.5, 8.9));
		System.out.println("两个数字相减结果:"+b.sub(-7.5, 8.9));
		System.out.println("两个数字相除结果,小数后保留10位:"+b.div(-7.5, 8.9));
		System.out.println("两个数字相除结果,小数后保留5位:"+b.div(-7.5, 8.9, 5));
	}	
}
两个数字相加结果:1.4
两个数字相减结果:-16.4
两个数字相除结果,小数后保留10位:-0.8426966292
两个数字相除结果,小数后保留5位:-0.84270

猜你喜欢

转载自blog.csdn.net/qq_36631529/article/details/82900922
今日推荐