zoukankan      html  css  js  c++  java
  • JAVA笔记整理-Math、定时器、大数据(BigDecimal)类型

    一、Math类

    java.lang.Math类用于数学计算的工具类 ,它提供都是静态方法 ,不需要构造Math对象

    常用方法:

    ​ Math.random():获取随机数

    ​ Math.abs() 获取绝对值

    ​ Math.ceil(): 向上取整

    Math.floor() :向下取整

    Math.rint():取接近它的整数 ,如果两个同样接近,往偶数靠近

    Math.max(int,int):返回两个数的最大值

    Math.min(int,int):返回两个数的最小值

    Math.round():四舍五入整数

    Math .sqrt():对一个数开平方

    Math.pow(double,double),对一个数的几次幂

     public static void main(String[] args) {
            System.out.println(Math.PI);
            System.out.println(Math.E);
            System.out.println(" 一个数的绝对值:"+Math.abs(-100));//100
            System.out.println(" 向上取整:"+Math.ceil(13.5)); // 14
            System.out.println(" 向上取整(比它大的最近数):"+Math.ceil(-13.5));// -13
            System.out.println("向下取整:"+ Math.floor(13.5));// 13
            System.out.println("向下取整"+Math.floor(-20.2));// -21
    
            //四舍五入
            System.out.println(Math.round(23.4));// 23
            System.out.println(Math.round(-23.5));//-23
            System.out.println(Math.round(-24.5));//-24
    
            System.out.println(Math.rint(23.4));// 23
            System.out.println(Math.rint(23.5));//24 如果两个一样接近,取接近偶数
            System.out.println(Math.rint(22.5));//22
            System.out.println(Math.rint(0.6));//0
    
        }
    

    二、定时器类(Timer类)

    ​ 1、Timer类

    ​ java.util.Timer类 是一个任务调度的定时器类,可以安排任务一次执行,或定期重复执行

    ​ 创建Timer对象

     Timer timer = new Timer();
     Timer timer = new Timer(name);
    

    ​ 常用方法

    timer.schedule(TimerTask,2000); 2秒后执行一次任务

    timer.schedule(TimerTask,2000,1000); 2秒后开始执行任务,每1s执行一次

    2、TimerTask类

    ​ java.util.TimerTask类是由定时器执行的任务类,是一个抽象类。

    import java.util.Timer;
    import java.util.TimerTask;
    
    public class TestTimer {
        //统计打印次数
        static int count=0;
        // 创建一个定时器类
        static Timer timer = new Timer("我的定时器");
    
        public static void main(String[] args) {
    
            // 开始定时一个任务
            TestTimer obj = new TestTimer();
            // 多少毫秒之和 执行一次任务
          //  timer.schedule(obj.new MyTask(),2000);
            // 2秒之后开始执行,每隔1s执行一次
            timer.schedule(obj.new MyTask(),2000,1000);
    
        }
        // 定义内部类时,可以直接使用外部类的属性  和它的对象
        class MyTask extends TimerTask{
            @Override
            public void run() {
                System.out.println("你好!!!");
                count++;
    
                if(count>=10){
                    System.out.println("停止");
                    //停止
                    timer.cancel();
                }
            }
        }
    }
    
    

    三、大数据类型BigDecimal

    1、BigDecimal类

    两个double类型的计算可能导致精度不准确,这里使用

    java.math.*里面提供了BigDecimal类(提供高精度计算的方法)

    public static void main(String[] args) {
             double a= 1.200000;
             double b= 1.35433;
             double c = a+b;
            System.out.println(c);
            System.out.println(0.05+0.01);
            System.out.println(1.0-0.42);  // 会出现精度问题  计算不准确
    
            // 使用BigDecimal ,先将类型转成字符串 (为了避免精度问题)
            BigDecimal num1 = new BigDecimal("0.051");
            BigDecimal num2 = new BigDecimal("0.012");
            // 两个数相加
    
            BigDecimal sum = num1.add(num2 ) ;
            // 设置保留2位整数  四舍五入
            sum =sum.setScale(2,BigDecimal.ROUND_HALF_UP);
            System.out.println(sum);
    
            // 减法
           sum =  num1.subtract(num2);
            System.out.println(sum);
    
           // 乘法
           sum =  num1.multiply(num2);
            System.out.println(sum);
    
           // 除法
           sum = num1.divide(num2,2,BigDecimal.ROUND_HALF_UP);
            System.out.println(sum);
    
        }
    

    2、NumberFormat类

    java.text.NumberFormat类 :用于将数值格式转成指定格式并输出字符串形式的类 。

    DecimalFormat类: 属于NumberFormat的子类。

      // NumberFormat类是对数值类型的格式化类,其中 DecimalFormat是继承NumberFormat
            // 获取数值的货币表现形式
            NumberFormat nf = NumberFormat.getCurrencyInstance();
            String s1 = nf.format(23424.2);
            System.out.println(s1);
    
            //获取数值的百分比
            nf = NumberFormat.getPercentInstance();
            s1= nf.format(0.654);
            System.out.println(s1);
    
            //根据指定的格式匹配百分比
            nf = new DecimalFormat("##.##%");
            s1=nf.format(0.654);
            System.out.println(s1);
    
            // 根据指定的模式匹配千分比
            nf = new DecimalFormat("##.##u2030");
            s1 = nf.format(0.6543);
            System.out.println(s1);
    
            // 根据指定的模式 转成科学计数法
            nf = new DecimalFormat("#.###E0");
            s1 = nf.format(198200);
            System.out.println(s1);
    
            // 根据指定的模式  将字符串转成 指定格式数值型
            String s2 ="25.3%";
            nf = new DecimalFormat("##.##%");
            Number dd = nf.parse(s2);
            double num = (double)dd;
            System.out.println("这个字符串转成double:"+num);
    
    
    
  • 相关阅读:
    矩阵特征值与特征向量
    拉格朗日插值matlab实现
    CloudCompare 的简单的使用说明
    kreuz-frankfurt-sample-generic-2019-02-08.xodr文件解读
    xml语言
    惯性坐标系
    四分位数及matlab实现
    参考文献类型标识
    matlab产生很多个相同的数字
    linux 中常用的一些头文件
  • 原文地址:https://www.cnblogs.com/z5452830/p/13874568.html
Copyright © 2011-2022 走看看