12--API-SimpleDateFormat--BigDecimal/BigInteger类

日期工具类SimpleDateFormat

1概念

​ 用来把Date类型和String类型的数据进行转换.

SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。

2创建对象

new SimpleDateFormat(String parm);
parm为一个字符串,表示格式.

时间模式

字母 时间元素 表示 示例
y Year 1996; 96
M 年中的月份 Month July; Jul; 07
D 年中的天数 Number 200
d 月份中的天数 Number 31;30;28;29
H 一天中的小时(24小时制) Number 23
h 天中的小时(12小时制) Number 11
m 分钟数 Number 60
s 分钟中的秒数 Number 60
S 毫秒数 Number 1000

3常见方法

方法名 功能
format(Date) 把Date格式化成字符串
parse(String) 把String解析成Date

4 测试案例

package cn.tedu.number;
		import java.text.ParseException;
		import java.text.SimpleDateFormat;
		import java.util.Date;
		import java.util.Scanner;
		//这个类用来测试  存活天数
		public class Test3_SDformat {
			public static void main(String[] args) throws Exception {
		//		1、接收用户输入的出生日期(String类型)
				String birthday = new Scanner(System.in).nextLine() ; 
				
		//		2、把String类型的日期  转成  Date类型(需要工具类SimpleDateFormat)
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				Date date = sdf.parse(birthday) ;
				
		//		3、获取出生时的毫秒值(getTime)  
				long birth = date.getTime() ;
		//		4、获取当前的毫秒值 
				long now = System.currentTimeMillis() ;
		//		5、输出时间差(换算成天。ms) 
				System.out.println(  (now-birth)/1000/60/60/24    ) ;
				
			}
		}

BigDecimal/BigInteger类

1 概述

​ --1、在java运算中,浮点数运算会不精确。解决方案就是BigDecimal。
​ --2、在java运算中,可能会有超大整数运算,超出了long范围。解决方案就是BigInteger。

2 创建对象

BigDecimal(double val) 
BigDecimal(String val) //建议使用 String类型  的构造方法

3 常用方法

BigDecimal add(BigDecimal augend)  //加法运算:
BigDecimal multiply(BigDecimal multiplicand)  //乘法运算:
BigDecimal subtract(BigDecimal subtrahend)  //减法运算:
divide(BigDecimal bd,保留位数,舍入方式)//除不尽时使用 除法运算:
BigDecimal setScale(保留位数,舍入方式)//同上
BigDecimal pow(int n):求数据的几次幂   

4 测试案例

package cn.tedu.number;

		import java.math.BigDecimal;
		import java.util.Scanner;

		//这个类用来测试 浮点数运算
		public class Test4_Double {
			public static void main(String[] args) {
				method();//暴露问题
				method2();// 解决浮点运算不精确的现象 BigDecimal
			}

			public static void method2() {
				// 1、接收用户输入的两个小数
				double a = new Scanner(System.in).nextDouble();
				double b = new Scanner(System.in).nextDouble();
				//2、创建对象 --  建议使用 String类型  的构造方法
				BigDecimal bd1 = new BigDecimal(a+"");
				BigDecimal bd2 = new BigDecimal(b+"");
				// 3、做运算
				BigDecimal bd3 ; //定义bd3保存计算结果
				bd3 = bd1.add(bd2) ;//加法
				System.out.println(bd3);
				bd3 = bd1.subtract(bd2) ;//减法
				System.out.println(bd3);
				bd3 = bd1.multiply(bd2) ;//乘法
				System.out.println(bd3);
			//		bd3 = bd1.divide(bd2) ;//除法java.lang.ArithmeticException: 除不尽
				//-divide(a,b,c)--a是指要运算的对象名  ---b是指要保留几位小数 ---c是指舍入方式
				try {
                bd3 = bd1.divide(bd2,3,BigDecimal.ROUND_HALF_UP) ;//除法
                    System.out.println(bd3);
                } catch (Exception e) {
				System.out.println("除数不能为0");
					}
				
			}

			public static void method() {
				// 1、接收用户输入的两个小数
				double a = new Scanner(System.in).nextDouble();
				double b = new Scanner(System.in).nextDouble();

				// 2、做运算
				System.out.println(a + b);// 不精确
				System.out.println(a - b);// 不精确
				System.out.println(a * b);// 不精确
				System.out.println(a / b);// 不精确

			}
		}

posted on 2020-05-16 22:12  liqiangbk  阅读(124)  评论(0编辑  收藏  举报

导航