Java常用工具类

数字格式化(DecimalFormat)

java.text.DecimalFormat格式化数字:

用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、科学计数法、百分数等。

通过使用该类可以为要输出的数字加上单位或控制数字的精度。

一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。

double pi = 3.1415927; // 圆周率
           // 取一位整数
           System.out.println(new DecimalFormat("0").format(pi));// 3
           // 取一位整数和两位小数
           System.out.println(new DecimalFormat("0.00").format(pi));// 3.14
           // 取两位整数和三位小数,整数不足部分以0填补。
           System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
           // 取所有整数部分
           System.out.println(new DecimalFormat("#").format(pi));// 3
           // 以百分比方式计数,并取两位小数
           System.out.println(new DecimalFormat("#.##%").format(pi));// 314.16%

           long c = 299792458;// 光速
           // 显示为科学计数法,并取五位小数
           System.out.println(new DecimalFormat("#.#####E0").format(c));// 2.99792E8
           // 显示为两位整数的科学计数法,并取四位小数
           System.out.println(new DecimalFormat("00.####E0").format(c));// 29.9792E7
           // 每三位以逗号进行分隔。
           System.out.println(new DecimalFormat(",###").format(c));// 299,792,458
           // 将格式嵌入文本
           System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(c));//光速大小为每秒299,792,458米。

 

Math类

Math类中提供了众多数学函数方法,

主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法,

这些方法都被定义为static形式,所以在程序中应用比较简便。

可以使用如下形式调用:Math.数学方法

 

在Math类中除了函数方法之外还存在一些常用数学常量,如圆周率、E等。

这些数学常量作为Math类的成员变量出现,调用起来也很简单。

可以使用如下形式调用:Math.PI    Math.E

math类中三大取整函数区别
1.ceil 2.floor 3.round
  
1.ceil,意思是天花板,java中叫做向上取整,大于等于该数字的最接近的整数
例: math.ceil(13.2)=14
     math.ceil(-13.2)=-13
 
2.floor,意思是地板,java中叫做向下取整,小于等于该数字的最接近的整数
 例: math.floor(13.2)=13
      math.floor(-13.2)=-14
 
3.round,最特殊,其实就是四舍五入
例: math.round(13.2)=13;math.round(13.5)=14
     math.round(-13.2)=-13,math.round(-13.5)=-13

     //abs求绝对值
     System.out.println(Math.abs(-10.4)); // 10.4

     //max 两个中返回大的值
     System.out.println(Math.max(-10.1, -10)); // -10.0
     System.out.println(Math.max(10.7, 10)); // 10.7

 

随机数

Math.random 取得一个大于或者等于0.0小于不等于1.0(0<=X<1)的随机数

Math.random()方法只可以产生0~1之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数。

 

 

Random类

通过实例化一个Random对象创建一个随机数生成器。

语法如下:

Random r=new Random();

其中,r是指Random对象。

 

兩個构造方法

public Random()

public Random(long seed)

 

Random类中实现的随机算法是伪随机,也就是有规则的随机。

 在进行随机时,随机算法的起源数字称为种子数(seed),

在种子数的基础上进行一定的变换,从而产生需要的随机数字。

 

 再次强调:种子数只是随机算法的起源数字,和生成的随机数字的区间无关

 

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。

也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,

第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

// 数值介于[0,1.0)之间
 System.out.println(r.nextDouble());

//该值介于int的区间,也就是-231到231-1之间
 System.out.println(r.nextInt());

//nextInt(int n)  [0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
 System.out.println(r.nextInt(10));

        //同时执行r3和r4 执行次数一定是 随机数相同
        Random r3 = new Random(10);
        Random r4 = new Random(10);
        System.out.println(r3.nextInt());
        System.out.println(r4.nextInt());

大数字运算

BigInteger

 

BigInteger类中封装了多种操作,除了基本的加、减、乘、除操作之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作

    BigInteger bigInteger1 = new BigInteger("9999999999999999999999999999999");
        BigInteger bigInteger2 = new BigInteger("999999999999999999999999999999");
         //加法运算
        BigInteger newBig = bigInteger1.add(bigInteger2);
        System.out.println(newBig);

        //减法运算
        newBig = bigInteger1.subtract(bigInteger2);
        System.out.println(newBig);

         // 乘法運算
        newBig = bigInteger1.multiply(bigInteger2);
        System.out.println(newBig);

        //除法运算
        newBig = bigInteger1.divide(bigInteger2);
        System.out.println(newBig);

 

BigDecimal

BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小数的概念。

一般的float型和double型数据只可以用来做科学计算或工程计算

  System.out.println(0.06 + 0.01); //0.06999999999999999
        System.out.println(1.0 - 0.42); //0.5800000000000001
        System.out.println(4.015 * 100); //401.49999999999994
        System.out.println(303.1 / 1000); //0.30310000000000004

        BigDecimal big1 = new BigDecimal("0.06");
        BigDecimal big2 = new BigDecimal("0.01");
        System.out.println(big1.add(big2));

        big1 = new BigDecimal("1.0");
        big2 = new BigDecimal("0.42");
        System.out.println(big1.subtract(big2));

        big1 = new BigDecimal("4.015");
        big2 = new BigDecimal("100");
        System.out.println(big1.multiply(big2));

        big1 = new BigDecimal("303.1");
        big2 = new BigDecimal("1000");
        System.out.println(big1.divide(big2));

 

转载于:https://my.oschina.net/u/3425197/blog/995735

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值