Hutool数字⼯具-NumberUtil使⽤(加减乘除,保留⼩数,格式
化数字,是否为数字。。。
数字⼯具针对数学运算做⼯具性封装。
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)und ⽅法主要封装BigDecimal中的⽅法来保留⼩数,返回BigDecimal,这个⽅法更加灵活,可以选择四舍五⼊或者全部舍弃等模式。
double te1 = 123456.123456;
double te2 = 123456.128456;
(2) undStr ⽅法主要封装String.format⽅法,舍弃⽅式采⽤四舍五⼊。
double te1 = 123456.123456;
double te2 = 123456.128456;
3 格式化数字
针对 DecimalFormat.format进⾏简单封装。按照固定格式对double或long类型的数字做格式化操作。
long c=299792458;//光速
String format = NumberUtil.decimalFormat(",###", c);//299,792,458
格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表⽰如果位数不⾜则以 0 填充,# 表⽰只要有可能就把数字拉上这个位置。
(1)0 -> 取⼀位整数
(2)0.00 -> 取⼀位整数和两位⼩数
(3)00.000 -> 取两位整数和三位⼩数
(4)# -> 取所有整数部分
(5)#.##% -> 以百分⽐⽅式计数,并取两位⼩数
(6)#.>E0 -> 显⽰为科学计数法,并取五位⼩数
(7),### -> 每三位以逗号进⾏分隔,例如:299,792,458
(8)光速⼤⼩为每秒,###⽶ -> 将格式嵌⼊⽂本
4 是否为数字
// 是否为数字
NumberUtil.isNumber("1");//true
bigdecimal格式化两位小数
//是否为整数
NumberUtil.isInteger("1.0");//false
//是否为浮点数
NumberUtil.isDouble("1.0");//true
//是否为质数
NumberUtil.isPrimes(3);//true;
5 随机数
//⽣成不重复随机数根据给定的最⼩数字和最⼤数字,以及随机数的个数,产⽣指定的不重复的数组,返回int[] ateRandomNumber(0, 100, 10);
//⽣成不重复随机数根据给定的最⼩数字和最⼤数字,以及随机数的个数,产⽣指定的不重复的数组,返回Integer[] ateBySet(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().List());
7 阶乘
//阶乘
NumberUtil.factorial(3, 1);//6
8 平⽅根
//平⽅根
NumberUtil.sqrt(16);//4
9 最⼤公约数和最⼩公倍数
//最⼤公约数
NumberUtil.divisor(15, 21);//3
//最⼩公倍数
NumberUtil.multiple(15, 21);//105
10 进制转换
//获得数字对应的⼆进制字符串
//⼆进制转int
NumberUtil.binaryToInt("111");//7
//⼆进制转long
NumberUtil.binaryToLong("111");//7
11 ⽐较⼤⼩
/
/⽐较两个值的⼤⼩
NumberUtilpare(1, 3);//-1
12 去除多余的0
//数字转字符串,⾃动并去除尾⼩数点⼉后多余的0        Str(1.00000);//1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论