Java常用类库--Math、Random、NumberFormat、DecimalFormat、BigInteger、BigDecimal

简介: <h1>1、Math类</h1> <div><span style="white-space:pre"></span>表示数学操作,例如:平方根、四舍五入等等。</div> <div> <pre name="code" class="java">public class MathDemo01{ public static void main(String args[]){ /

1、Math类

表示数学操作,例如:平方根、四舍五入等等。
public class MathDemo01{
	public static void main(String args[]){
		// Math类中的方法都是静态方法,直接使用“类.方法名称()”的形式调用即可
		System.out.println("求平方根:" + Math.sqrt(9.0)) ;
		System.out.println("求两数的最大值:" + Math.max(10,30)) ;
		System.out.println("求两数的最小值:" + Math.min(10,30)) ;
		System.out.println("2的3次方:" + Math.pow(2,3)) ;
		System.out.println("四舍五入:" + Math.round(33.6)) ;
	}
};

2、Random类



Random类的主要功能是产生随机数,可以产生一个指定范围的随机数。Random类是在java.util包中的类。
生成10个随机数字,且数字不大于100
import java.util.Random ;
public class RandomDemo01{
	public static void main(String args[]){
		Random r = new Random() ;		// 实例化Random对象
		for(int i=0;i<10;i++){
			System.out.print(r.nextInt(100) + "\t") ;
		}
	}
};

3、NumberFormat类

从类名称上可以看见,此类的主要功能是完成数字的格式化显示。例如:“12345678”。


import java.text.* ;
public class NumberFormatDemo01{
	public static void main(String args[]){
		NumberFormat nf = null ;		// 声明一个NumberFormat对象
		nf = NumberFormat.getInstance() ;	// 得到默认的数字格式化显示
		System.out.println("格式化之后的数字:" + nf.format(10000000)) ;
		System.out.println("格式化之后的数字:" + nf.format(1000.345)) ;
	}
};

4、DecimalFormat类



import java.text.* ;
class FormatDemo{
	public void format1(String pattern,double value){	// 此方法专门用于完成数字的格式化显示
		DecimalFormat df = null ;			// 声明一个DecimalFormat类的对象
		df = new DecimalFormat(pattern) ;	// 实例化对象,传入模板
		String str = df.format(value) ;		// 格式化数字
		System.out.println("使用" + pattern
			+ "格式化数字" + value + ":" + str) ;
	}
};
public class NumberFormatDemo02{
	public static void main(String args[]){
		FormatDemo demo = new FormatDemo() ;	// 格式化对象的类
		demo.format1("###,###.###",111222.34567) ;
		demo.format1("000,000.000",11222.34567) ;
		demo.format1("###,###.###¥",111222.34567) ;
		demo.format1("000,000.000¥",11222.34567) ;
		demo.format1("##.###%",0.345678) ;
		demo.format1("00.###%",0.0345678) ;
		demo.format1("###.###\u2030",0.345678) ;
	}
};

5、BigInteger类



import java.math.BigInteger ;
public class BigIntegerDemo01{
	public static void main(String args[]){
		BigInteger bi1 = new BigInteger("123456789") ;	// 声明BigInteger对象
		BigInteger bi2 = new BigInteger("987654321") ;	// 声明BigInteger对象
		System.out.println("加法操作:" + bi2.add(bi1)) ;	// 加法操作
		System.out.println("减法操作:" + bi2.subtract(bi1)) ;	// 减法操作
		System.out.println("乘法操作:" + bi2.multiply(bi1)) ;	// 乘法操作
		System.out.println("除法操作:" + bi2.divide(bi1)) ;	// 除法操作
		System.out.println("最大数:" + bi2.max(bi1)) ;	 // 求出最大数
		System.out.println("最小数:" + bi2.min(bi1)) ;	 // 求出最小数
		BigInteger result[] = bi2.divideAndRemainder(bi1) ;	// 求出余数的除法操作
		System.out.println("商是:" + result[0] + 
			";余数是:" + result[1]) ;
	}
};

6、BigDecimal类



import java.math.* ;
class MyMath{
	public static double add(double d1,double d2){		// 进行加法计算
		BigDecimal b1 = new BigDecimal(d1) ;
		BigDecimal b2 = new BigDecimal(d2) ;
		return b1.add(b2).doubleValue() ;
	}
	public static double sub(double d1,double d2){		// 进行减法计算
		BigDecimal b1 = new BigDecimal(d1) ;
		BigDecimal b2 = new BigDecimal(d2) ;
		return b1.subtract(b2).doubleValue() ;
	}
	public static double mul(double d1,double d2){		// 进行乘法计算
		BigDecimal b1 = new BigDecimal(d1) ;
		BigDecimal b2 = new BigDecimal(d2) ;
		return b1.multiply(b2).doubleValue() ;
	}
	public static double div(double d1,double d2,int len){		// 进行除法计算
		BigDecimal b1 = new BigDecimal(d1) ;
		BigDecimal b2 = new BigDecimal(d2) ;
		return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;
	}
	public static double round(double d,int len){	// 进行四舍五入
		BigDecimal b1 = new BigDecimal(d) ;
		BigDecimal b2 = new BigDecimal(1) ;
		return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;
	}
};

public class BigDecimalDemo01{
	public static void main(String args[]){
		System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ;
		System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3.333),3)) ;
		System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345,3.333),2)) ;
		System.out.println("除法运算:" + MyMath.div(10.345,3.333,3)) ;
	}
};



目录
相关文章
|
5月前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
4月前
|
Java
BigInteger和BigDecimal18
BigInteger和BigDecimal18
44 3
|
3月前
|
Java
java的Math类和random类
java的Math类和random类
20 0
|
4月前
|
Java
Java Number & Math 类详解
在 Java 中,`Number` 类和 `Math` 类是处理数字和数学运算的重要工具。
79 2
|
6月前
|
开发框架 Java Apache
Java中的类库与工具集推荐
Java中的类库与工具集推荐
|
6月前
|
Java 开发者
Java基础之Math类
【7月更文挑战第2天】 Java的Math类在`java.lang`包中,提供数学运算如绝对值、最大值/最小值、幂运算、开方、三角函数、对数、随机数等。它包含常量E(自然对数底数)和PI(圆周率)。方法如`abs()`返回绝对值,`max()`和`min()`返回最大/小值,`pow()`计算次幂,`sqrt()`求平方根。还有`sin()`, `cos()`, `tan()`等三角函数以及`random()`生成随机数。通过这些静态方法,开发者能方便地执行各种数学计算。
31 0
|
8天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
10天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
10天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。