Hutool 数字工具-NumberUtil使用 加减乘除,保留小数,格式化数字,是否为数字,随机数,整数列表,阶乘,平方根,最大公约数和最小公倍数,进制转换,比较大小,去除多余的0

数字工具针对数学运算做工具性封装。

1 加减乘除

四种运算都会将double转为BigDecimal后计算,解决float和double类型无法进行精确计算的问题。这些方法常用于商业计算。

        //针对数字类型做加法
        NumberUtil.add(1,2);//3
        // 针对数字类型做减法
        NumberUtil.sub(1,1);//0
        //针对数字类型做乘法
        NumberUtil.mul(1,3);//3
        //针对数字类型做除法,并提供重载方法用于规定除不尽的情况下保留小数位数和舍弃方式。
        NumberUtil.div(1,3);//0.3333333333
2 保留小数

保留小数的方法主要有两种:

(1)NumberUtil.round 方法主要封装BigDecimal中的方法来保留小数,返回BigDecimal,这个方法更加灵活,可以选择四舍五入或者全部舍弃等模式。

        double te1 = 123456.123456;
        double te2 = 123456.128456;
        NumberUtil.round(te1, 4);//结果:123456.1235
        NumberUtil.round(te2, 4);//结果:123456.1285

(2) NumberUtil.roundStr 方法主要封装String.format方法,舍弃方式采用四舍五入。

        double te1 = 123456.123456;
        double te2 = 123456.128456;
        NumberUtil.roundStr(te1, 4);//结果:123456.1235
        NumberUtil.roundStr(te2, 4);//结果:123456.1285
3 格式化数字

针对 DecimalFormat.format进行简单封装。按照固定格式对double或long类型的数字做格式化操作。

long c=299792458;//光速
String format = NumberUtil.decimalFormat(",###", c);//299,792,458

格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。

  • 0 -> 取一位整数
  • 0.00 -> 取一位整数和两位小数
  • 00.000 -> 取两位整数和三位小数
  • -> 取所有整数部分

  • .##% -> 以百分比方式计数,并取两位小数

  • .#####E0 -> 显示为科学计数法,并取五位小数

  • ,### -> 每三位以逗号进行分隔,例如:299,792,458
  • 光速大小为每秒,###米 -> 
4 是否为数字
        // 是否为数字
        NumberUtil.isNumber("1");//true
        //是否为整数
        NumberUtil.isInteger("1.0");//false
        //是否为浮点数
        NumberUtil.isDouble("1.0");//true
        //是否为质数
        NumberUtil.isPrimes(3);//true;
5 随机数
//生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组,返回int[]
NumberUtil.generateRandomNumber(0, 100, 10);
//生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组,返回Integer[]
NumberUtil.generateBySet(0, 100, 10);
6 整数列表
//方法根据范围和步进,生成一个有序整数列表
int[] rangeList = NumberUtil.range(1, 100, 2);//1,3,5,...99
//将给定范围内的整数添加到已有集合中
List<Integer> rangeList2 = NumberUtil.appendRange(100, 200, 2
    , new ArrayList<Integer>(Arrays.asList(new Integer[]{1})))
.stream().collect(Collectors.toList());
7 阶乘
        //阶乘
        NumberUtil.factorial(3, 1);//6
8 平方根
        //平方根
        NumberUtil.sqrt(16);//4
最大公约数和最小公倍数
        //最大公约数
        NumberUtil.divisor(15, 21);//3
        //最小公倍数
        NumberUtil.multiple(15, 21);//105
10 进制转换
        //获得数字对应的二进制字符串
        NumberUtil.getBinaryStr(8);//1000
        //二进制转int
        NumberUtil.binaryToInt("111");//7
        //二进制转long
        NumberUtil.binaryToLong("111");//7
11 比较大小
        //比较两个值的大小
        NumberUtil.compare(1, 3);//-1
12 去除多余的0
        //数字转字符串,自动并去除尾小数点儿后多余的0
        NumberUtil.toStr(1.00000);//1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值