• Math及相关类


    Math这个类在java中是一个与数学相关的类。位于java.lang包下。

    Math的构造方法是私有的,我们不能直接调用来创建对象。

    而且Math中的属性跟方法都是static的,不需要创建对象。

    常用方法自己通过api文档了解。

    值得说一下的是Math中有一个random()方法,返回一个随机数,范围是[0-1)。

    但我们如果想要0-9之间的随机数,那么可以这样,int value=(int)Math.random()*10;

    如果想要5.0-10.9之间的随机小数,可以这样,(Math.random()*6)+5,random()的范围是0-0.99999...那么范围就是(0.0-5.999994...)+5

    但发现一个问题,计算小数时可能会丢失精度。

      这个时候可以考虑另外一个类专门处理随机数的Random类,

    常用一些方法,

    Random r=new Random();
    r.nextInt();随机产生int类型取值范围的整数,有负数有正数。

    r.nextInt(10);带参数可以指定范围,[0-10)之间的整数,包含0取不到10,左闭右开。

    r.nextFloat();随机产生一个[0.0-1.0)的小数

    r.nextBoolean();随机产生true,false

    等等。

    取5.0-10.9的随机数就可以这样,float f=(r.nextInt(6)+5)+r.nextFloat();[0.0--5.0]+5-->[0.0--10.0]+[0.0--0.9999..)即[5.0--10.999..)

      UUID类

    UUID uuid=UUID.randomUUID();//创建对象
    System.out.println(uuid.toString());//随机产生一个32位的每位是16进制的数字,一般用作表格主键

      BigInteger类

    你是否有疑问,我们学习的基本数据类型,取值范围最大的long -2的63次方~2的63次方-1.那么如果我们万一需要超过这个范围的值该怎么办。

    这个时候可以考虑BigInteger类,这个类底层采用的动态的数组,总之就是可以。

    位于java.math包,继承Number类,它提供的构造方法都是带参数的,我们一般带String参数进行构造

    //例子,设计一个方法,计算阶乘,如果这个数太大,long可能存不下,5:1x2x3x4x5 120
    	private static BigInteger factorial(int num){
    		BigInteger result=new BigInteger("1");
    		for(int i=1;i<=num;i++){
    			result=result.multiply(new BigInteger(i+""));
    		}
    		
    		return result;
    	}
    

      如果num参数传一个25,那么你会发现得到的结果远远超过long的范围。

      BigDecimal类

    这个类是处理超过Double取值范围的情况下可以考虑使用的。这个类的方法多是处理小数点后的部分

    BigDecimal decimal=new BigDecimal("1.123");
    System.out.println(decimal.setScale(2,BigDecimal.ROUND_DOWN));//前者是位数,后者是模式,小数点后2位,模式是向下取整,即只保留小数两位之前的以后的直接不要了,没有四舍五入或者别的取值方式。

    相比的是另外一种模式,BigDecimal.ROUND_UP,这种的话是不管你第三位是什么第二位都加1,比如1.123得到1.13  23.333得到23.34 除了0,如果第三位是

    0的话,就不加,2.120000 2.12

       DecimalFormat小数点前后的部分都能处理的类---格式化,缺点是比较单一没什么模式

        DecimalFormat df=new DecimalFormat("000.###");//0代表必须存在,#代表可有可无,
            System.out.println(df.format(12.22222));//012.222小数点前面必须要三位,不够的用0补位,小数点后边可有三位,多的就不要了少了就不管。
            System.out.println(df.format(12.2));//012.2
  • 相关阅读:
    TeX中的引号
    竖式问题
    蛇形填数
    开灯问题
    排列
    分数化小数
    子序列的和
    cookie
    post请求
    get请求
  • 原文地址:https://www.cnblogs.com/hebiao/p/12730207.html
Copyright © 2020-2023  润新知