Java基础知识—-数字处理

  • Post author:
  • Post category:java


一、数字格式化

数字的格式化在解决实际问题时使用非常普遍,如表示某超市商品价格,需要保留两位有效数字。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



版权声明:本文为QQ675396947原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。