public class NumberUtil extends Object
BigDecimal
new BigDecimal(0.1)
表示的不是0.1而是0.1000000000000000055511151231257827021181583404541015625
这是因为0.1无法准确的表示为double。因此应该使用new BigDecimal(String)。
相关介绍:Constructor and Description |
---|
NumberUtil() |
Modifier and Type | Method and Description |
---|---|
static BigDecimal |
add(BigDecimal... values)
提供精确的加法运算
如果传入多个值为null或者空,则返回0 |
static double |
add(double v1,
double v2)
提供精确的加法运算
|
static double |
add(Double v1,
Double v2)
提供精确的加法运算
|
static double |
add(double v1,
float v2)
提供精确的加法运算
|
static double |
add(double v1,
long v2)
提供精确的加法运算
|
static double |
add(float v1,
double v2)
提供精确的加法运算
|
static double |
add(float v1,
float v2)
提供精确的加法运算
|
static double |
add(long v1,
double v2)
提供精确的加法运算
|
static double |
add(long v1,
long v2)
提供精确的加法运算
|
static BigDecimal |
add(Number... values)
提供精确的加法运算
如果传入多个值为null或者空,则返回0 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如: 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数 也就是说,在这些国家地区,1.20表示120,而非1.2。 |
static BigDecimal |
add(Number v1,
Number v2)
提供精确的加法运算
如果传入多个值为null或者空,则返回0 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如: 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数 也就是说,在这些国家地区,1.20表示120,而非1.2。 |
static BigDecimal |
add(String... values)
提供精确的加法运算
如果传入多个值为null或者空,则返回0 |
static Collection<Integer> |
appendRange(int start,
int stop,
Collection<Integer> values)
将给定范围内的整数添加到已有集合中,步进为1
|
static Collection<Integer> |
appendRange(int start,
int stop,
int step,
Collection<Integer> values)
将给定范围内的整数添加到已有集合中
|
static int |
binaryToInt(String binaryStr)
二进制转int
|
static long |
binaryToLong(String binaryStr)
二进制转long
|
static double |
calculate(String expression)
计算数学表达式的值,只支持加减乘除和取余
如: calculate("(0*1--3)-5/-4-(3*(-2.13))") -》 10.64 |
static int |
ceilDiv(int v1,
int v2)
补充Math.ceilDiv() JDK8中添加了和Math.floorDiv()但却没有ceilDiv()
|
static int |
compare(byte x,
byte y)
比较两个值的大小
|
static int |
compare(char x,
char y)
比较两个值的大小
|
static int |
compare(double x,
double y)
比较两个值的大小
|
static int |
compare(int x,
int y)
比较两个值的大小
|
static int |
compare(long x,
long y)
比较两个值的大小
|
static int |
compare(short x,
short y)
比较两个值的大小
|
static int |
count(int total,
int part)
计算等份个数
|
static String |
decimalFormat(String pattern,
double value)
|
static String |
decimalFormat(String pattern,
long value)
|
static String |
decimalFormat(String pattern,
Object value)
|
static String |
decimalFormat(String pattern,
Object value,
RoundingMode roundingMode)
|
static String |
decimalFormatMoney(double value)
格式化金额输出,每三位用逗号分隔
|
static BigDecimal |
div(BigDecimal v1,
BigDecimal v2,
int scale,
RoundingMode roundingMode)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
|
static double |
div(double v1,
double v2)
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
|
static double |
div(Double v1,
Double v2)
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
|
static double |
div(double v1,
double v2,
int scale)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
|
static double |
div(Double v1,
Double v2,
int scale)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
|
static double |
div(double v1,
double v2,
int scale,
RoundingMode roundingMode)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
|
static double |
div(Double v1,
Double v2,
int scale,
RoundingMode roundingMode)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
|
static double |
div(double v1,
float v2)
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
|
static double |
div(double v1,
float v2,
int scale)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
|
static double |
div(double v1,
float v2,
int scale,
RoundingMode roundingMode)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
|
static double |
div(float v1,
double v2)
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
|
static double |
div(float v1,
double v2,
int scale)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
|
static double |
div(float v1,
double v2,
int scale,
RoundingMode roundingMode)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
|
static double |
div(float v1,
float v2)
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
|
static double |
div(float v1,
float v2,
int scale)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
|
static double |
div(float v1,
float v2,
int scale,
RoundingMode roundingMode)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
|
static BigDecimal |
div(Number v1,
Number v2)
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
|
static BigDecimal |
div(Number v1,
Number v2,
int scale)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
|
static BigDecimal |
div(Number v1,
Number v2,
int scale,
RoundingMode roundingMode)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
|
static BigDecimal |
div(String v1,
String v2)
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
|
static BigDecimal |
div(String v1,
String v2,
int scale)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
|
static BigDecimal |
div(String v1,
String v2,
int scale,
RoundingMode roundingMode)
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
|
static int |
divisor(int m,
int n)
最大公约数
|
static boolean |
equals(BigDecimal bigNum1,
BigDecimal bigNum2)
|
static boolean |
equals(char c1,
char c2,
boolean ignoreCase)
比较两个字符是否相同
|
static boolean |
equals(double num1,
double num2)
|
static boolean |
equals(float num1,
float num2)
|
static boolean |
equals(long num1,
long num2)
比较大小,值相等 返回true
此方法修复传入long型数据由于没有本类型重载方法,导致数据精度丢失 |
static boolean |
equals(Number number1,
Number number2)
比较数字值是否相等,相等返回
true 需要注意的是 BigDecimal 需要特殊处理BigDecimal使用compareTo方式判断,因为使用equals方法也判断小数位数,如2.0和2.00就不相等, 此方法判断值相等时忽略精度的,即0.00 == 0 如果用户提供两个Number都是 BigDecimal ,则通过调用BigDecimal.compareTo(BigDecimal) 方法来判断是否相等
其他情况调用Object.equals(Object) 比较
|
static BigInteger |
factorial(BigInteger n)
计算阶乘
n!
|
static BigInteger |
factorial(BigInteger start,
BigInteger end)
计算范围阶乘
factorial(start, end) = start * (start - 1) * ... * (end + 1)
|
static long |
factorial(long n)
计算阶乘
n!
|
static long |
factorial(long start,
long end)
计算范围阶乘
factorial(start, end) = start * (start - 1) * ... * (end + 1)
|
static String |
formatPercent(double number,
int scale)
格式化百分比,小数采用四舍五入方式
|
static BigInteger |
fromUnsignedByteArray(byte[] buf)
无符号bytes转
BigInteger |
static BigInteger |
fromUnsignedByteArray(byte[] buf,
int off,
int length)
无符号bytes转
BigInteger |
static Integer[] |
generateBySet(int begin,
int end,
int size)
生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组
|
static int[] |
generateRandomNumber(int begin,
int end,
int size)
生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组
|
static int[] |
generateRandomNumber(int begin,
int end,
int size,
int[] seed)
生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组
|
static String |
getBinaryStr(Number number)
获得数字对应的二进制字符串
|
static boolean |
isBeside(int number1,
int number2)
判断两个数字是否相邻,例如1和2相邻,1和3不相邻
判断方法为做差取绝对值判断是否为1 |
static boolean |
isBeside(long number1,
long number2)
判断两个数字是否相邻,例如1和2相邻,1和3不相邻
判断方法为做差取绝对值判断是否为1 |
static boolean |
isDouble(String s)
判断字符串是否是浮点数
|
static boolean |
isEven(int num)
检查是否为偶数
|
static boolean |
isGreater(BigDecimal bigNum1,
BigDecimal bigNum2)
比较大小,参数1 > 参数2 返回true
|
static boolean |
isGreaterOrEqual(BigDecimal bigNum1,
BigDecimal bigNum2)
比较大小,参数1 >= 参数2 返回true
|
static boolean |
isIn(BigDecimal value,
BigDecimal minInclude,
BigDecimal maxInclude)
检查值是否在指定范围内
|
static boolean |
isInteger(String s)
判断String是否是整数
支持10进制 |
static boolean |
isLess(BigDecimal bigNum1,
BigDecimal bigNum2)
比较大小,参数1 < 参数2 返回true
|
static boolean |
isLessOrEqual(BigDecimal bigNum1,
BigDecimal bigNum2)
比较大小,参数1<=参数2 返回true
|
static boolean |
isLong(String s)
判断字符串是否是Long类型
支持10进制 |
static boolean |
isNumber(CharSequence str)
是否为数字,支持包括:
1、10进制
2、16进制数字(0x开头)
3、科学计数法形式(1234E3)
4、类型标识形式(123D)
5、正负数标识形式(+123、-234)
|
static boolean |
isOdd(int num)
检查是否为奇数
|
static boolean |
isPowerOfTwo(long n)
判断一个整数是否是2的幂
|
static boolean |
isPrimes(int n)
是否是质数(素数)
质数表的质数又称素数。 |
static boolean |
isValid(double number)
检查是否为有效的数字
检查double否为无限大,或者Not a Number(NaN) |
static boolean |
isValid(float number)
检查是否为有效的数字
检查double否为无限大,或者Not a Number(NaN) |
static boolean |
isValidNumber(Number number)
检查是否为有效的数字
检查Double和Float是否为无限大,或者Not a Number 非数字类型和Null将返回false |
static BigDecimal |
max(BigDecimal... numberArray)
取最大值
|
static double |
max(double... numberArray)
取最大值
|
static float |
max(float... numberArray)
取最大值
|
static int |
max(int... numberArray)
取最大值
|
static long |
max(long... numberArray)
取最大值
|
static short |
max(short... numberArray)
取最大值
|
static <T extends Comparable<? super T>> |
max(T[] numberArray)
取最大值
|
static BigDecimal |
min(BigDecimal... numberArray)
取最小值
|
static double |
min(double... numberArray)
取最小值
|
static float |
min(float... numberArray)
取最小值
|
static int |
min(int... numberArray)
取最小值
|
static long |
min(long... numberArray)
取最小值
|
static short |
min(short... numberArray)
取最小值
|
static <T extends Comparable<? super T>> |
min(T[] numberArray)
取最小值
|
static BigDecimal |
mul(BigDecimal... values)
提供精确的乘法运算
如果传入多个值为null或者空,则返回0 |
static double |
mul(double v1,
double v2)
提供精确的乘法运算
|
static double |
mul(Double v1,
Double v2)
提供精确的乘法运算
如果传入多个值为null或者空,则返回0 |
static double |
mul(double v1,
float v2)
提供精确的乘法运算
|
static double |
mul(float v1,
double v2)
提供精确的乘法运算
|
static double |
mul(float v1,
float v2)
提供精确的乘法运算
|
static BigDecimal |
mul(Number... values)
提供精确的乘法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
mul(Number v1,
Number v2)
提供精确的乘法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
mul(String... values)
提供精确的乘法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
mul(String v1,
String v2)
提供精确的乘法运算
|
static int |
multiple(int m,
int n)
最小公倍数
|
static BigInteger |
newBigInteger(String str)
创建
BigInteger ,支持16进制、10进制和8进制,如果传入空白串返回nullfrom Apache Common Lang |
static BigDecimal |
null2Zero(BigDecimal decimal)
Deprecated.
|
static BigDecimal |
nullToZero(BigDecimal number)
如果给定值为
null ,返回0,否则返回原值 |
static BigInteger |
nullToZero(BigInteger number)
如果给定值为
null ,返回0,否则返回原值 |
static byte |
nullToZero(Byte number)
如果给定值为
null ,返回0,否则返回原值 |
static double |
nullToZero(Double number)
如果给定值为
null ,返回0,否则返回原值 |
static float |
nullToZero(Float number)
如果给定值为
null ,返回0,否则返回原值 |
static int |
nullToZero(Integer number)
如果给定值为
null ,返回0,否则返回原值 |
static long |
nullToZero(Long number)
如果给定值为
null ,返回0,否则返回原值 |
static short |
nullToZero(Short number)
如果给定值为
null ,返回0,否则返回原值 |
static double |
parseDouble(String number)
解析转换数字字符串为long型数字,规则如下:
1、0开头的忽略开头的0
2、空串返回0
3、其它情况按照10进制转换
4、.123形式返回0.123(按照小于0的小数对待)
|
static Double |
parseDouble(String numberStr,
Double defaultValue)
解析转换数字字符串为
Double 规则如下:
1、0开头的忽略开头的0
2、空串返回0
3、其它情况按照10进制转换
4、.123形式返回0.123(按照小于0的小数对待)
|
static float |
parseFloat(String number)
解析转换数字字符串为long型数字,规则如下:
1、0开头的忽略开头的0
2、空串返回0
3、其它情况按照10进制转换
4、.123形式返回0.123(按照小于0的小数对待)
|
static Float |
parseFloat(String numberStr,
Float defaultValue)
解析转换数字字符串为
Float 规则如下:
1、0开头的忽略开头的0
2、空串返回0
3、其它情况按照10进制转换
4、.123形式返回0.123(按照小于0的小数对待)
|
static int |
parseInt(String number)
解析转换数字字符串为int型数字,规则如下:
1、0x开头的视为16进制数字
2、0开头的忽略开头的0
3、其它情况按照10进制转换
4、空串返回0
5、.123形式返回0(按照小于0的小数对待)
6、123.56截取小数点之前的数字,忽略小数部分
|
static Integer |
parseInt(String numberStr,
Integer defaultValue)
解析转换数字字符串为
Integer 规则如下:
1、0x开头的视为16进制数字
2、0开头的忽略开头的0
3、其它情况按照10进制转换
4、空串返回0
5、.123形式返回0(按照小于0的小数对待)
6、123.56截取小数点之前的数字,忽略小数部分
7、解析失败返回默认值
|
static long |
parseLong(String number)
解析转换数字字符串为long型数字,规则如下:
1、0x开头的视为16进制数字
2、0开头的忽略开头的0
3、空串返回0
4、其它情况按照10进制转换
5、.123形式返回0(按照小于0的小数对待)
6、123.56截取小数点之前的数字,忽略小数部分
|
static Long |
parseLong(String numberStr,
Long defaultValue)
解析转换数字字符串为
Long 规则如下:
1、0x开头的视为16进制数字
2、0开头的忽略开头的0
3、其它情况按照10进制转换
4、空串返回0
5、.123形式返回0(按照小于0的小数对待)
6、123.56截取小数点之前的数字,忽略小数部分
7、解析失败返回默认值
|
static Number |
parseNumber(String numberStr)
将指定字符串转换为
Number 对象此方法不支持科学计数法 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如: 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数 也就是说,在这些国家地区,1.20表示120,而非1.2。 |
static Number |
parseNumber(String numberStr,
Number defaultValue)
将指定字符串转换为
Number
此方法不支持科学计数法 |
static int |
partValue(int total,
int partCount)
把给定的总数平均分成N份,返回每份的个数
当除以分数有余数时每份+1 |
static int |
partValue(int total,
int partCount,
boolean isPlusOneWhenHasRem)
把给定的总数平均分成N份,返回每份的个数
如果isPlusOneWhenHasRem为true,则当除以分数有余数时每份+1,否则丢弃余数部分 |
static BigDecimal |
pow(BigDecimal number,
int n)
提供精确的幂运算
如果n为负数,则返回1/a的-n次方,默认四舍五入 |
static BigDecimal |
pow(Number number,
int n)
提供精确的幂运算
|
static int |
processMultiple(int selectNum,
int minNum)
可以用于计算双色球、大乐透注数的方法
比如大乐透35选5可以这样调用processMultiple(7,5); 就是数学中的:C75=7*6/2*1 |
static int[] |
range(int stop)
从0开始给定范围内的整数列表,步进为1
|
static int[] |
range(int start,
int stop)
给定范围内的整数列表,步进为1
|
static int[] |
range(int start,
int stop,
int step)
给定范围内的整数列表
|
static BigDecimal |
round(BigDecimal number,
int scale)
|
static BigDecimal |
round(BigDecimal number,
int scale,
RoundingMode roundingMode)
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567 |
static BigDecimal |
round(double v,
int scale)
|
static BigDecimal |
round(double v,
int scale,
RoundingMode roundingMode)
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567 |
static BigDecimal |
round(String numberStr,
int scale)
|
static BigDecimal |
round(String numberStr,
int scale,
RoundingMode roundingMode)
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567 |
static BigDecimal |
roundDown(BigDecimal value,
int scale)
保留固定小数位数,舍去多余位数
|
static BigDecimal |
roundDown(Number number,
int scale)
保留固定小数位数,舍去多余位数
|
static BigDecimal |
roundHalfEven(BigDecimal value,
int scale)
四舍六入五成双计算法
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
|
static BigDecimal |
roundHalfEven(Number number,
int scale)
四舍六入五成双计算法
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
|
static String |
roundStr(double v,
int scale)
|
static String |
roundStr(double v,
int scale,
RoundingMode roundingMode)
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567 |
static String |
roundStr(String numberStr,
int scale)
|
static String |
roundStr(String numberStr,
int scale,
RoundingMode roundingMode)
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567 |
static long |
sqrt(long x)
平方根算法
推荐使用 Math.sqrt(double) |
static BigDecimal |
sub(BigDecimal... values)
提供精确的减法运算
如果传入多个值为null或者空,则返回0 |
static double |
sub(double v1,
double v2)
提供精确的减法运算
|
static double |
sub(Double v1,
Double v2)
提供精确的减法运算
|
static double |
sub(double v1,
float v2)
提供精确的减法运算
|
static double |
sub(float v1,
double v2)
提供精确的减法运算
|
static double |
sub(float v1,
float v2)
提供精确的减法运算
|
static BigDecimal |
sub(Number... values)
提供精确的减法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
sub(Number v1,
Number v2)
提供精确的减法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
sub(String... values)
提供精确的减法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
toBigDecimal(Number number)
|
static BigDecimal |
toBigDecimal(String numberStr)
数字转
BigDecimal null或""或空白符转换为0 |
static BigInteger |
toBigInteger(Number number)
数字转
BigInteger null转换为0 |
static BigInteger |
toBigInteger(String number)
数字转
BigInteger null或""或空白符转换为0 |
static byte[] |
toBytes(int value)
int值转byte数组,使用大端字节序(高位字节在前,低位字节在后)
见:http://www.ruanyifeng.com/blog/2016/11/byte-order.html |
static double |
toDouble(Number value)
Number值转换为double
float强制转换存在精度问题,此方法避免精度丢失 |
static int |
toInt(byte[] bytes)
byte数组转int,使用大端字节序(高位字节在前,低位字节在后)
见:http://www.ruanyifeng.com/blog/2016/11/byte-order.html |
static String |
toStr(BigDecimal bigDecimal)
|
static String |
toStr(BigDecimal bigDecimal,
boolean isStripTrailingZeros)
|
static String |
toStr(Number number)
|
static String |
toStr(Number number,
boolean isStripTrailingZeros)
|
static String |
toStr(Number number,
String defaultValue)
数字转字符串
调用 Object.toString() ,并去除尾小数点儿后多余的0 |
static byte[] |
toUnsignedByteArray(BigInteger value)
以无符号字节数组的形式返回传入值。
|
static byte[] |
toUnsignedByteArray(int length,
BigInteger value)
以无符号字节数组的形式返回传入值。
|
static int |
zero2One(int value)
如果给定值为0,返回1,否则返回原值
|
public static double add(float v1, float v2)
v1
- 被加数v2
- 加数public static double add(float v1, double v2)
v1
- 被加数v2
- 加数public static double add(double v1, float v2)
v1
- 被加数v2
- 加数public static double add(double v1, double v2)
v1
- 被加数v2
- 加数public static double add(long v1, double v2)
v1
- 被加数v2
- 加数public static double add(double v1, long v2)
v1
- 被加数v2
- 加数public static double add(long v1, long v2)
v1
- 被加数v2
- 加数public static double add(Double v1, Double v2)
v1
- 被加数v2
- 加数public static BigDecimal add(Number v1, Number v2)
需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
也就是说,在这些国家地区,1.20表示120,而非1.2。
v1
- 被加数v2
- 加数public static BigDecimal add(Number... values)
需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
也就是说,在这些国家地区,1.20表示120,而非1.2。
values
- 多个被加值public static BigDecimal add(String... values)
values
- 多个被加值public static BigDecimal add(BigDecimal... values)
values
- 多个被加值public static double sub(float v1, float v2)
v1
- 被减数v2
- 减数public static double sub(float v1, double v2)
v1
- 被减数v2
- 减数public static double sub(double v1, float v2)
v1
- 被减数v2
- 减数public static double sub(double v1, double v2)
v1
- 被减数v2
- 减数public static double sub(Double v1, Double v2)
v1
- 被减数v2
- 减数public static BigDecimal sub(Number v1, Number v2)
v1
- 被减数v2
- 减数public static BigDecimal sub(Number... values)
values
- 多个被减值public static BigDecimal sub(String... values)
values
- 多个被减值public static BigDecimal sub(BigDecimal... values)
values
- 多个被减值public static double mul(float v1, float v2)
v1
- 被乘数v2
- 乘数public static double mul(float v1, double v2)
v1
- 被乘数v2
- 乘数public static double mul(double v1, float v2)
v1
- 被乘数v2
- 乘数public static double mul(double v1, double v2)
v1
- 被乘数v2
- 乘数public static double mul(Double v1, Double v2)
v1
- 被乘数v2
- 乘数public static BigDecimal mul(Number v1, Number v2)
v1
- 被乘数v2
- 乘数public static BigDecimal mul(Number... values)
values
- 多个被乘值public static BigDecimal mul(String v1, String v2)
v1
- 被乘数v2
- 乘数public static BigDecimal mul(String... values)
values
- 多个被乘值public static BigDecimal mul(BigDecimal... values)
values
- 多个被乘值public static double div(float v1, float v2)
v1
- 被除数v2
- 除数public static double div(float v1, double v2)
v1
- 被除数v2
- 除数public static double div(double v1, float v2)
v1
- 被除数v2
- 除数public static double div(double v1, double v2)
v1
- 被除数v2
- 除数public static double div(Double v1, Double v2)
v1
- 被除数v2
- 除数public static BigDecimal div(Number v1, Number v2)
v1
- 被除数v2
- 除数public static BigDecimal div(String v1, String v2)
v1
- 被除数v2
- 除数public static double div(float v1, float v2, int scale)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值public static double div(float v1, double v2, int scale)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值public static double div(double v1, float v2, int scale)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值public static double div(double v1, double v2, int scale)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值public static double div(Double v1, Double v2, int scale)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值public static BigDecimal div(Number v1, Number v2, int scale)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值public static BigDecimal div(String v1, String v2, int scale)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值public static double div(float v1, float v2, int scale, RoundingMode roundingMode)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式 RoundingMode
public static double div(float v1, double v2, int scale, RoundingMode roundingMode)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式 RoundingMode
public static double div(double v1, float v2, int scale, RoundingMode roundingMode)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式 RoundingMode
public static double div(double v1, double v2, int scale, RoundingMode roundingMode)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式 RoundingMode
public static double div(Double v1, Double v2, int scale, RoundingMode roundingMode)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式 RoundingMode
public static BigDecimal div(Number v1, Number v2, int scale, RoundingMode roundingMode)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式 RoundingMode
public static BigDecimal div(String v1, String v2, int scale, RoundingMode roundingMode)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式 RoundingMode
public static BigDecimal div(BigDecimal v1, BigDecimal v2, int scale, RoundingMode roundingMode)
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式 RoundingMode
public static int ceilDiv(int v1, int v2)
v1
- 被除数v2
- 除数public static BigDecimal round(double v, int scale)
v
- 值scale
- 保留小数位数public static String roundStr(double v, int scale)
v
- 值scale
- 保留小数位数public static BigDecimal round(String numberStr, int scale)
numberStr
- 数字值的字符串表现形式scale
- 保留小数位数public static BigDecimal round(BigDecimal number, int scale)
number
- 数字值scale
- 保留小数位数public static String roundStr(String numberStr, int scale)
numberStr
- 数字值的字符串表现形式scale
- 保留小数位数public static BigDecimal round(double v, int scale, RoundingMode roundingMode)
v
- 值scale
- 保留小数位数roundingMode
- 保留小数的模式 RoundingMode
public static String roundStr(double v, int scale, RoundingMode roundingMode)
v
- 值scale
- 保留小数位数roundingMode
- 保留小数的模式 RoundingMode
public static BigDecimal round(String numberStr, int scale, RoundingMode roundingMode)
numberStr
- 数字值的字符串表现形式scale
- 保留小数位数,如果传入小于0,则默认0roundingMode
- 保留小数的模式 RoundingMode
,如果传入null则默认四舍五入public static BigDecimal round(BigDecimal number, int scale, RoundingMode roundingMode)
number
- 数字值scale
- 保留小数位数,如果传入小于0,则默认0roundingMode
- 保留小数的模式 RoundingMode
,如果传入null则默认四舍五入public static String roundStr(String numberStr, int scale, RoundingMode roundingMode)
numberStr
- 数字值的字符串表现形式scale
- 保留小数位数roundingMode
- 保留小数的模式 RoundingMode
public static BigDecimal roundHalfEven(Number number, int scale)
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
算法规则: 四舍六入五考虑, 五后非零就进一, 五后皆零看奇偶, 五前为偶应舍去, 五前为奇要进一。
number
- 需要科学计算的数据scale
- 保留的小数位public static BigDecimal roundHalfEven(BigDecimal value, int scale)
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
算法规则: 四舍六入五考虑, 五后非零就进一, 五后皆零看奇偶, 五前为偶应舍去, 五前为奇要进一。
value
- 需要科学计算的数据scale
- 保留的小数位public static BigDecimal roundDown(Number number, int scale)
number
- 需要科学计算的数据scale
- 保留的小数位public static BigDecimal roundDown(BigDecimal value, int scale)
value
- 需要科学计算的数据scale
- 保留的小数位public static String decimalFormat(String pattern, double value)
pattern
- 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。value
- 值public static String decimalFormat(String pattern, long value)
pattern
- 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。value
- 值public static String decimalFormat(String pattern, Object value)
pattern
- 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。value
- 值,支持BigDecimal、BigInteger、Number等类型public static String decimalFormat(String pattern, Object value, RoundingMode roundingMode)
pattern
- 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。value
- 值,支持BigDecimal、BigInteger、Number等类型roundingMode
- 保留小数的方式枚举public static String decimalFormatMoney(double value)
value
- 金额public static String formatPercent(double number, int scale)
number
- 值scale
- 保留小数位数public static boolean isNumber(CharSequence str)
1、10进制 2、16进制数字(0x开头) 3、科学计数法形式(1234E3) 4、类型标识形式(123D) 5、正负数标识形式(+123、-234)
str
- 字符串值public static boolean isInteger(String s)
s
- Stringpublic static boolean isLong(String s)
s
- StringLong
类型public static boolean isDouble(String s)
s
- StringDouble
类型public static boolean isPrimes(int n)
n
- 数字public static int[] generateRandomNumber(int begin, int end, int size)
begin
- 最小数字(包含该数)end
- 最大数字(不包含该数)size
- 指定产生随机数的个数public static int[] generateRandomNumber(int begin, int end, int size, int[] seed)
begin
- 最小数字(包含该数)end
- 最大数字(不包含该数)size
- 指定产生随机数的个数seed
- 种子,用于取随机数的int池public static Integer[] generateBySet(int begin, int end, int size)
begin
- 最小数字(包含该数)end
- 最大数字(不包含该数)size
- 指定产生随机数的个数public static int[] range(int stop)
stop
- 结束(包含)public static int[] range(int start, int stop)
start
- 开始(包含)stop
- 结束(包含)public static int[] range(int start, int stop, int step)
start
- 开始(包含)stop
- 结束(包含)step
- 步进public static Collection<Integer> appendRange(int start, int stop, Collection<Integer> values)
start
- 开始(包含)stop
- 结束(包含)values
- 集合public static Collection<Integer> appendRange(int start, int stop, int step, Collection<Integer> values)
start
- 开始(包含)stop
- 结束(包含)step
- 步进values
- 集合public static BigInteger factorial(BigInteger n)
n! = n * (n-1) * ... * 2 * 1
n
- 阶乘起始public static BigInteger factorial(BigInteger start, BigInteger end)
factorial(start, end) = start * (start - 1) * ... * (end + 1)
start
- 阶乘起始(包含)end
- 阶乘结束,必须小于起始(不包括)public static long factorial(long start, long end)
factorial(start, end) = start * (start - 1) * ... * (end + 1)
start
- 阶乘起始(包含)end
- 阶乘结束,必须小于起始(不包括)public static long factorial(long n)
n! = n * (n-1) * ... * 2 * 1
n
- 阶乘起始public static long sqrt(long x)
Math.sqrt(double)
x
- 值public static int processMultiple(int selectNum, int minNum)
selectNum
- 选中小球个数minNum
- 最少要选中多少个小球public static int divisor(int m, int n)
m
- 第一个值n
- 第二个值public static int multiple(int m, int n)
m
- 第一个值n
- 第二个值public static String getBinaryStr(Number number)
number
- 数字public static int binaryToInt(String binaryStr)
binaryStr
- 二进制字符串public static long binaryToLong(String binaryStr)
binaryStr
- 二进制字符串public static int compare(char x, char y)
x
- 第一个值y
- 第二个值Character.compare(char, char)
public static int compare(double x, double y)
x
- 第一个值y
- 第二个值Double.compare(double, double)
public static int compare(int x, int y)
x
- 第一个值y
- 第二个值Integer.compare(int, int)
public static int compare(long x, long y)
x
- 第一个值y
- 第二个值Long.compare(long, long)
public static int compare(short x, short y)
x
- 第一个值y
- 第二个值Short.compare(short, short)
public static int compare(byte x, byte y)
x
- 第一个值y
- 第二个值Byte.compare(byte, byte)
public static boolean isGreater(BigDecimal bigNum1, BigDecimal bigNum2)
bigNum1
- 数字1bigNum2
- 数字2public static boolean isGreaterOrEqual(BigDecimal bigNum1, BigDecimal bigNum2)
bigNum1
- 数字1bigNum2
- 数字2public static boolean isLess(BigDecimal bigNum1, BigDecimal bigNum2)
bigNum1
- 数字1bigNum2
- 数字2public static boolean isLessOrEqual(BigDecimal bigNum1, BigDecimal bigNum2)
bigNum1
- 数字1bigNum2
- 数字2public static boolean isIn(BigDecimal value, BigDecimal minInclude, BigDecimal maxInclude)
value
- 值minInclude
- 最小值(包含)maxInclude
- 最大值(包含)public static boolean equals(double num1, double num2)
num1
- 数字1num2
- 数字2public static boolean equals(float num1, float num2)
num1
- 数字1num2
- 数字2public static boolean equals(long num1, long num2)
num1
- 数字1num2
- 数字2public static boolean equals(Number number1, Number number2)
true
BigDecimal
需要特殊处理BigDecimal
,则通过调用BigDecimal.compareTo(BigDecimal)
方法来判断是否相等Object.equals(Object)
比较number1
- 数字1number2
- 数字2Objects.equals(Object, Object)
public static boolean equals(BigDecimal bigNum1, BigDecimal bigNum2)
bigNum1
- 数字1bigNum2
- 数字2public static boolean equals(char c1, char c2, boolean ignoreCase)
c1
- 字符1c2
- 字符2ignoreCase
- 是否忽略大小写CharUtil.equals(char, char, boolean)
public static <T extends Comparable<? super T>> T min(T[] numberArray)
T
- 元素类型numberArray
- 数字数组ArrayUtil.min(Comparable[])
public static long min(long... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.min(long...)
public static int min(int... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.min(int...)
public static short min(short... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.min(short...)
public static double min(double... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.min(double...)
public static float min(float... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.min(float...)
public static BigDecimal min(BigDecimal... numberArray)
numberArray
- 数字数组ArrayUtil.min(Comparable[])
public static <T extends Comparable<? super T>> T max(T[] numberArray)
T
- 元素类型numberArray
- 数字数组ArrayUtil.max(Comparable[])
public static long max(long... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.max(long...)
public static int max(int... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.max(int...)
public static short max(short... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.max(short...)
public static double max(double... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.max(double...)
public static float max(float... numberArray)
numberArray
- 数字数组PrimitiveArrayUtil.max(float...)
public static BigDecimal max(BigDecimal... numberArray)
numberArray
- 数字数组ArrayUtil.max(Comparable[])
public static String toStr(Number number, String defaultValue)
Object.toString()
,并去除尾小数点儿后多余的0number
- A NumberdefaultValue
- 如果number参数为null
,返回此默认值public static String toStr(Number number, boolean isStripTrailingZeros)
number
- A NumberisStripTrailingZeros
- 是否去除末尾多余0,例如5.0返回5public static String toStr(BigDecimal bigDecimal)
bigDecimal
- A BigDecimal
public static String toStr(BigDecimal bigDecimal, boolean isStripTrailingZeros)
bigDecimal
- A BigDecimal
isStripTrailingZeros
- 是否去除末尾多余0,例如5.0返回5public static BigDecimal toBigDecimal(Number number)
number
- 数字BigDecimal
public static BigDecimal toBigDecimal(String numberStr)
BigDecimal
numberStr
- 数字字符串BigDecimal
public static BigInteger toBigInteger(Number number)
BigInteger
number
- 数字BigInteger
public static BigInteger toBigInteger(String number)
BigInteger
number
- 数字字符串BigInteger
public static int count(int total, int part)
total
- 总数part
- 每份的个数@Deprecated public static BigDecimal null2Zero(BigDecimal decimal)
nullToZero(BigDecimal)
decimal
- BigDecimal
,可以为null
BigDecimal
参数为空时返回0的值public static int zero2One(int value)
value
- 值public static int nullToZero(Integer number)
null
,返回0,否则返回原值number
- 值public static long nullToZero(Long number)
null
,返回0,否则返回原值number
- 值public static double nullToZero(Double number)
null
,返回0,否则返回原值number
- 值public static float nullToZero(Float number)
null
,返回0,否则返回原值number
- 值public static short nullToZero(Short number)
null
,返回0,否则返回原值number
- 值public static byte nullToZero(Byte number)
null
,返回0,否则返回原值number
- 值public static BigDecimal nullToZero(BigDecimal number)
null
,返回0,否则返回原值number
- 值public static BigInteger nullToZero(BigInteger number)
null
,返回0,否则返回原值number
- 值public static BigInteger newBigInteger(String str)
BigInteger
,支持16进制、10进制和8进制,如果传入空白串返回nullstr
- 数字字符串BigInteger
public static boolean isBeside(long number1, long number2)
number1
- 数字1number2
- 数字2public static boolean isBeside(int number1, int number2)
number1
- 数字1number2
- 数字2public static int partValue(int total, int partCount)
total
- 总数partCount
- 份数public static int partValue(int total, int partCount, boolean isPlusOneWhenHasRem)
total
- 总数partCount
- 份数isPlusOneWhenHasRem
- 在有余数时是否每份+1public static BigDecimal pow(Number number, int n)
number
- 底数n
- 指数public static BigDecimal pow(BigDecimal number, int n)
number
- 底数n
- 指数,如果为负数,则返回1/a的-n次方public static boolean isPowerOfTwo(long n)
n
- 待验证的整数public static int parseInt(String number) throws NumberFormatException
1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、其它情况按照10进制转换 4、空串返回0 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分
number
- 数字,支持0x开头、0开头和普通十进制NumberFormatException
- 数字格式异常public static long parseLong(String number)
1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、空串返回0 4、其它情况按照10进制转换 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分
number
- 数字,支持0x开头、0开头和普通十进制public static float parseFloat(String number)
1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
number
- 数字,支持0x开头、0开头和普通十进制public static double parseDouble(String number)
1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
number
- 数字,支持0x开头、0开头和普通十进制public static Number parseNumber(String numberStr) throws NumberFormatException
Number
对象
需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
也就是说,在这些国家地区,1.20表示120,而非1.2。
numberStr
- Number字符串NumberFormatException
- 包装了ParseException
,当给定的数字字符串无法解析时抛出public static Integer parseInt(String numberStr, Integer defaultValue)
Integer
规则如下:
1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、其它情况按照10进制转换 4、空串返回0 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分 7、解析失败返回默认值
numberStr
- 数字字符串,支持0x开头、0开头和普通十进制defaultValue
- 如果解析失败, 将返回defaultValue, 允许nullpublic static Long parseLong(String numberStr, Long defaultValue)
Long
规则如下:
1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、其它情况按照10进制转换 4、空串返回0 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分 7、解析失败返回默认值
numberStr
- 数字字符串,支持0x开头、0开头和普通十进制defaultValue
- 如果解析失败, 将返回defaultValue, 允许nullpublic static Float parseFloat(String numberStr, Float defaultValue)
Float
规则如下:
1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
numberStr
- 数字字符串,支持0x开头、0开头和普通十进制defaultValue
- 如果解析失败, 将返回defaultValue, 允许nullpublic static Double parseDouble(String numberStr, Double defaultValue)
Double
规则如下:
1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
numberStr
- 数字字符串,支持0x开头、0开头和普通十进制defaultValue
- 如果解析失败, 将返回defaultValue, 允许nullpublic static Number parseNumber(String numberStr, Number defaultValue)
Number
此方法不支持科学计数法numberStr
- Number字符串defaultValue
- 如果解析失败, 将返回defaultValue, 允许nullpublic static byte[] toBytes(int value)
value
- 值public static int toInt(byte[] bytes)
bytes
- byte数组public static byte[] toUnsignedByteArray(BigInteger value)
value
- 需要转换的值public static byte[] toUnsignedByteArray(int length, BigInteger value)
length
- bytes长度value
- 需要转换的值public static BigInteger fromUnsignedByteArray(byte[] buf)
BigInteger
buf
- buf 无符号bytesBigInteger
public static BigInteger fromUnsignedByteArray(byte[] buf, int off, int length)
BigInteger
buf
- 无符号bytesoff
- 起始位置length
- 长度BigInteger
public static boolean isValidNumber(Number number)
number
- 被检查类型public static boolean isValid(double number)
number
- 被检查doublepublic static boolean isValid(float number)
number
- 被检查doublepublic static double calculate(String expression)
calculate("(0*1--3)-5/-4-(3*(-2.13))") -》 10.64
expression
- 数学表达式public static double toDouble(Number value)
value
- 被转换的float值public static boolean isOdd(int num)
num
- 被判断的数值public static boolean isEven(int num)
num
- 被判断的数值Copyright © 2024. All rights reserved.