zoukankan      html  css  js  c++  java
  • 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);// 不精确
    
    			}
    		}
    
  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/liqbk/p/12902469.html
Copyright © 2011-2022 走看看