Java从入门到精通_学习笔记10(数字处理类)

数字处理类

  • 数字格式化(DecimalFormat类)
  • 数字运算(Math类)
  • 随机数(Random类)
  • 大数字运算(BigInteger类和BigDecimal类)

Java提供了许多数字处理类,包括DecimalFormat类(用于格式化数字)、Math类(为各种数学计算提供了工具方法)、Random类(为处理随机数问题提供了各种方法)、BigInteger类BigDecimal类

数字格式化(DecimalFormat类)

在Java中使用java.text.DecimalFormat格式化数字。DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。可以将一些数字格式化为整数、浮点数、百分数等。


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

  • 如果数据绝对值大于0.001且小于10000000,以常规小数形式表示;
  • 如果数据绝对值小于0.001或者大于10000000,以科学记数法表示。

DecimalFormat类格式化数字前,需要先设置格式化模板,有以下两种设置模板的方式:

  • 实例化DecimalFormat类时,在构造方法中传入格式化模板
  • 实例化DecimalFormat类后,调用applyPattern( )方法设置格式化模板。

DecimalFormat类依赖format( )方法将数字按照格式化模板进行格式化。

1. DecimalFormat类中的特殊字符
Java从入门到精通_学习笔记10(数字处理类)_第1张图片

2. 代码演示:

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);	// >通过调用format()方法格式化指定的数字
		System.out.println(value + " " + parttern + " " >+ output);
	}

	// 第二种设置格式化模板的方式
	static public void >UseApplyPatternMethodFormat(String pattern , >double value){
		DecimalFormat myFormat = new >DecimalFormat(); // 实例化DecimalFormat类
		myFormat.applyPattern(pattern); // 调用>applyPattern()方法传入格式化模板
		String output = myFormat.format(value);	// >通过调用format()方法格式化指定的数字
		System.out.println(value + " " + parttern + " " >+ output);
	}
	public static void main(String args[]){
		// 调用静态SimgleFormat()方法
		SimgleFormat("###,###.###" , 123456.789); >// 按照格式化模板格式化数字,该位存在数字则>显示,不存在则不显示
		SimgleFormat("00000000.###kg" , >123456.789); // 按照格式化模板格式化数字,并>在数字后加上单位
		SimgleFormat("000000.000" , 123.78); // 按>照格式化模板格式化数字,不存在位以0显示
		// 调用静态UseApplyPatternMethodFormat()方法
		UseApplyPatternMethodFormat("#.###%" , >0.789); // 按照格式化模板格式化数字,将数字转>换为百分数形式
		UseApplyPatternMethodFormat("###.##" , >123456.789);	// 按照格式化模板格式化数字,将>小数点后格式化为两位  								
		>UseApplyPatternMethodFormat("0.00\u2030" , >0.789); // 按照格式化模板格式化数字,将数字转>化为千分数形式
	}
}

补充:

  • DecimalFormat类中还有一个setGroupingSize()方法可以设置格式化数字的分组大小
DecimalFormat myFormat = new >DecimalFormat();
myFormat.setGroupingSize(2); // 设置以每2个数>字分组
myFormat.setGroupingUsed(false); // 设置是否>支持分组,若为false,则上一句代码失去作用

数字运算(Math类)

在Java语言中提供了一个执行数学基本运算的Math类,该类包括常用的数学运算方法,如三角函数方法、指数函数方法、对数函数方法、平方根函数方法等一些常用数学函数,除此之外还提供了一些常用的数学常量,如PI、E等。

  1. Math类

在Math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法,同时还存在一些常用的数学常量。这些方法和常量都被定义为static形式,可以直接通过 Math.数学方法Math.常量名 调用。

  1. 常用数学运算方法

(1) 三角函数方法

  • public static double sin(double a):返回角的三角正弦。
  • public static double cos(double a):返回角的三角余弦。
  • public static double tan(double a):返回角的三角正切。
  • public static double asin(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 angrad):将弧度转换为角度。

(2) 指数函数方法

  • public static double exp(double a):用于获取e的a次方,即取eª。
  • public static double log(double a):用于取自然对数,即取lna的值。
  • 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,double b):用于取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(float a):将参数加上0.5后返回与参数最近的整数。
  • public static long round(double a):将参数加上0.5后返回与参数最近的整数,然后强制转换为长整型。

(3) 取最大值、最小值、绝对值函数方法

  • public static double max(double a,double b):取a与b之间的最大值。
  • public static int min(int a,int b):取a与b之间的最小值,参数为整型。
  • public static long min(long a,long b):取a与b之间的最小值,参数为长整型。
  • public static float min(float a,float b):取a与b之间的最小值,参数为浮点型。
  • public static double min(double a,double b):取a与b之间的最小值,参数为双精度型。
  • public static int abs(int a):返回整型参数的绝对值。
  • public static long abs(long a):返回长整型参数的绝对值。
  • public static float abs(float a):返回浮点型参数的绝对值。
  • public static double abs(double a):返回双精度型参数的绝对值。

随机数(Random类)

在Java中主要提供了两种生成随机数的方式:

  • 调用Math类的random()方法生成随机数;
  • 调用Random类生成各种数据类型的随机数。
  1. Math.random()方法

在Math类中存在一个random()方法,用于产生随机数字。这个方法默认生成大于等于0.0且小于1.0的double型随机数,即0 <= Math.random() < 1.0


代码演示:

public class MathRandom{

	public static int GetEvenNum(double num1 ,  > double num2){
		// 产生num1~num2之间的随机数,前闭后开
		int s = (int)num1 + (int)(Math.Random()*(num2 - num1));
		if(s % 2 == 0){ // 判断是否为偶数
			return s; // 是偶数,返回s
		}
		else{
			return s + 1; // 是奇数,加1后变偶数返回
		}
	}
	
	public static void main(String args[]){
	// 调用产生随机数方法
	System.out.println("任意一个2~32之间的偶 > 数:" + GetEvenNum(2,32));
	}
}
  1. Random类

Java中提供了一种可以获取随机数的方式,那就是java.util.Random类。通过实例化一个Random对象可以创建一个随机数生成器


Random的常用构造方法有以下两种:

  • Random();
  • Random( 随机数生成器的种子 );

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( ):返回一个概率密度为高斯分布的双精度值。

大数字运算(BigInteger类和BigDecimal类)

在Java中提供了大数字的操作类java.math.BigInteger类java.math.BigDecimal类。这两个类用于高精度计算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类。

  1. DigInteger类

BigInteger类型的数字范围较Integer类型的数字范围要大得多,BigInteger支持任意精度的整数.


DeInteger常用构造方法:

  • public BigInteger(String val);

BigInteger类中常用的几种运算方法:

  • public BigInteger add(BigInteger val):做加法运算。
  • public BigInteger subtract(BigInteger val):做减法运算。
  • public BigInteger multiply(BigInteger val):做乘法运算。
  • public BigInteger divide(BigInteger val):做除法运算。
  • public BigInteger remainder(BigInteger val):做取余操作。
  • public BigInteger[] divideAndRemainder(BigInteger val):用数组返回余数和商,结果数组中第一个值为商,第二个值为余数。
  • public BigInteger pow(int exponent):进行取参数的exponent次方操作。
  • public BigInteger negate():取相反数。
  • public BigInteger shiftLeft(int n):将数字左移n位,如果n为负数,做右移操作。
  • public BigInteger shiftRight(int n):将数字右移n位,如果n为负数,做左移操作。
  • public BigInteger and(BigInteger val):做与操作。
  • public BigInteger or(BigInteger val):做或操作。
  • public int compareTo(BigInteger val):做数字比较操作。
  • public boolean equals(Object x):当参数x是BigInteger类型的数字并且数值相等时,返回true。
  • public BigInteger min(BigInteger val):返回较小的数值。
  • public BigInteger max(BigInteger val):返回较大的数值。
  1. BigDecimal类

BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小数的概念


BigDecimal有以下两个常用的构造方法:

  • public BigDecimal(double val):实例化时将双精度型转换为BigDecimal类型。
  • public BigDecimal(String val):实例化时将字符串形式转换为BigDecimal类型。

BigDecimal类中常用的运算方法:

  • public BigDecimal add(BigDecimal augend):做加法操作。
  • public BigDecimal subtract(BigDecimal subtrahend):做减法操作。
  • public BigDecimal multiply(BigDecimal multiplicand):做乘法操作。
  • public BigDecimal divide(BigDecimal divisor,int scale,introundingMode):做除法操作,方法中3个参数分别代表除数、商的小数点后的位数、近似处理模式。

divide()方法的多种处理模式:Java从入门到精通_学习笔记10(数字处理类)_第2张图片

你可能感兴趣的:(Java学习笔记)