• java学习day12--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);// 不精确
    
    			}
    		}
    
  • 相关阅读:
    062 Unique Paths 不同路径
    061 Rotate List 旋转链表
    060 Permutation Sequence 排列序列
    059 Spiral Matrix II 旋转打印矩阵 II
    058 Length of Last Word 最后一个单词的长度
    057 Insert Interval 插入区间
    bzoj3527: [Zjoi2014]力
    bzoj2194: 快速傅立叶之二
    bzoj2820: YY的GCD
    bzoj2005: [Noi2010]能量采集
  • 原文地址:https://www.cnblogs.com/liqbk/p/12902469.html
Copyright © 2020-2023  润新知