Package com.luna.common.math
Class NumberUtil
java.lang.Object
com.luna.common.math.NumberUtil
数字工具类
对于精确值计算应该使用
JDK7中BigDecimal(double val)构造方法的结果有一定的不可预知性,例如:
对于精确值计算应该使用
BigDecimal
JDK7中BigDecimal(double val)构造方法的结果有一定的不可预知性,例如:
new BigDecimal(0.1)
表示的不是0.1而是0.1000000000000000055511151231257827021181583404541015625
这是因为0.1无法准确的表示为double。因此应该使用new BigDecimal(String)。
相关介绍:- http://www.oschina.net/code/snippet_563112_25237
- https://github.com/venusdrogon/feilong-core/wiki/one-jdk7-bug-thinking
- Author:
- Looly
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic double
add
(double v1, double v2) 提供精确的加法运算static double
add
(double v1, float v2) 提供精确的加法运算static double
add
(float v1, double v2) 提供精确的加法运算static double
add
(float v1, float v2) 提供精确的加法运算static double
提供精确的加法运算static BigDecimal
提供精确的加法运算
如果传入多个值为null或者空,则返回0static BigDecimal
提供精确的加法运算
如果传入多个值为null或者空,则返回0static BigDecimal
提供精确的加法运算
如果传入多个值为null或者空,则返回0static BigDecimal
add
(BigDecimal... values) 提供精确的加法运算
如果传入多个值为null或者空,则返回0static Collection<Integer>
appendRange
(int start, int stop, int step, Collection<Integer> values) 将给定范围内的整数添加到已有集合中static Collection<Integer>
appendRange
(int start, int stop, Collection<Integer> values) 将给定范围内的整数添加到已有集合中,步进为1static int
binaryToInt
(String binaryStr) 二进制转intstatic long
binaryToLong
(String binaryStr) 二进制转longstatic double
计算数学表达式的值,只支持加减乘除和取余
如: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 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, 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 double
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入static double
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入static double
div
(Double v1, Double v2, int scale, RoundingMode roundingMode) 提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度static BigDecimal
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入static BigDecimal
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入static BigDecimal
div
(Number v1, Number v2, int scale, RoundingMode roundingMode) 提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度static BigDecimal
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入static BigDecimal
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入static BigDecimal
div
(String v1, String v2, int scale, RoundingMode roundingMode) 提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度static BigDecimal
div
(BigDecimal v1, BigDecimal v2, int scale, RoundingMode roundingMode) 提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度static int
divisor
(int m, int n) 最大公约数static boolean
equals
(double num1, double num2) static boolean
equals
(float num1, float num2) static boolean
equals
(BigDecimal bigNum1, BigDecimal bigNum2) static long
factorial
(long n) 计算阶乘static long
factorial
(long start, long end) 计算范围阶乘static BigInteger
计算阶乘static BigInteger
factorial
(BigInteger start, BigInteger end) 计算范围阶乘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, int[] seed) 生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组static String
getBinaryStr
(Number number) 获得数字对应的二进制字符串static boolean
isBeside
(int number1, int number2) 判断两个数字是否相邻,例如1和2相邻,1和3不相邻
判断方法为做差取绝对值判断是否为1static boolean
isBeside
(long number1, long number2) 判断两个数字是否相邻,例如1和2相邻,1和3不相邻
判断方法为做差取绝对值判断是否为1static boolean
判断字符串是否是浮点数static boolean
isGreater
(BigDecimal bigNum1, BigDecimal bigNum2) 比较大小,参数1 > 参数2 返回truestatic boolean
isGreaterOrEqual
(BigDecimal bigNum1, BigDecimal bigNum2) 比较大小,参数1 >= 参数2 返回truestatic boolean
判断String是否是整数
支持10进制static boolean
isLess
(BigDecimal bigNum1, BigDecimal bigNum2) 比较大小,参数1 < 参数2 返回truestatic boolean
isLessOrEqual
(BigDecimal bigNum1, BigDecimal bigNum2) 比较大小,参数1<=参数2 返回truestatic boolean
判断字符串是否是Long类型
支持10进制static boolean
isNumber
(CharSequence str) 是否为数字,支持包括:static boolean
isPowerOfTwo
(long n) 判断一个整数是否是2的幂static boolean
isPrimes
(int n) 是否是质数(素数)
质数表的质数又称素数。指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。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将返回truestatic double
mul
(double v1, double v2) 提供精确的乘法运算static double
mul
(double v1, float v2) 提供精确的乘法运算static double
mul
(float v1, double v2) 提供精确的乘法运算static double
mul
(float v1, float v2) 提供精确的乘法运算static double
提供精确的乘法运算
如果传入多个值为null或者空,则返回0static BigDecimal
提供精确的乘法运算
如果传入多个值为null或者空,则返回0static BigDecimal
提供精确的乘法运算
如果传入多个值为null或者空,则返回0static BigDecimal
提供精确的乘法运算
如果传入多个值为null或者空,则返回0static BigDecimal
提供精确的乘法运算static BigDecimal
mul
(BigDecimal... values) 提供精确的乘法运算
如果传入多个值为null或者空,则返回0static int
multiple
(int m, int n) 最小公倍数static BigInteger
newBigInteger
(String str) 创建BigInteger
,支持16进制、10进制和8进制,如果传入空白串返回null
from Apache Common Langstatic BigDecimal
null2Zero
(BigDecimal decimal) 空转0static double
parseDouble
(String number) 解析转换数字字符串为long型数字,规则如下:static float
parseFloat
(String number) 解析转换数字字符串为long型数字,规则如下:static int
解析转换数字字符串为int型数字,规则如下:static long
解析转换数字字符串为long型数字,规则如下:static Number
parseNumber
(String numberStr) 将指定字符串转换为Number
对象static int
partValue
(int total, int partCount) 把给定的总数平均分成N份,返回每份的个数
当除以分数有余数时每份+1static int
partValue
(int total, int partCount, boolean isPlusOneWhenHasRem) 把给定的总数平均分成N份,返回每份的个数
如果isPlusOneWhenHasRem为true,则当除以分数有余数时每份+1,否则丢弃余数部分static Double
percentToDouble
(String percent) static BigDecimal
提供精确的幂运算static BigDecimal
pow
(BigDecimal number, int n) 提供精确的幂运算static int
processMultiple
(int selectNum, int minNum) 可以用于计算双色球、大乐透注数的方法
比如大乐透35选5可以这样调用processMultiple(7,5); 就是数学中的:C75=7*6/2*1static int[]
range
(int stop) 从0开始给定范围内的整数列表,步进为1static int[]
range
(int start, int stop) 给定范围内的整数列表,步进为1static int[]
range
(int start, int stop, int step) 给定范围内的整数列表static BigDecimal
round
(double v, int scale) static BigDecimal
round
(double v, int scale, RoundingMode roundingMode) 保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567static BigDecimal
static BigDecimal
round
(String numberStr, int scale, RoundingMode roundingMode) 保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567static BigDecimal
round
(BigDecimal number, int scale) static BigDecimal
round
(BigDecimal number, int scale, RoundingMode roundingMode) 保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567static BigDecimal
保留固定小数位数,舍去多余位数static BigDecimal
roundDown
(BigDecimal value, int scale) 保留固定小数位数,舍去多余位数static BigDecimal
roundHalfEven
(Number number, int scale) 四舍六入五成双计算法static BigDecimal
roundHalfEven
(BigDecimal value, int scale) 四舍六入五成双计算法static String
roundStr
(double v, int scale) static String
roundStr
(double v, int scale, RoundingMode roundingMode) 保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567static String
static String
roundStr
(String numberStr, int scale, RoundingMode roundingMode) 保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567static long
sqrt
(long x) 平方根算法
推荐使用Math.sqrt(double)
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 double
提供精确的减法运算static BigDecimal
提供精确的减法运算
如果传入多个值为null或者空,则返回0static BigDecimal
提供精确的减法运算
如果传入多个值为null或者空,则返回0static BigDecimal
提供精确的减法运算
如果传入多个值为null或者空,则返回0static BigDecimal
sub
(BigDecimal... values) 提供精确的减法运算
如果传入多个值为null或者空,则返回0static BigDecimal
toBigDecimal
(Number number) static BigDecimal
toBigDecimal
(String number) 数字转BigDecimal
null或""或空白符转换为0static BigInteger
toBigInteger
(Number number) 数字转BigInteger
null转换为0static BigInteger
toBigInteger
(String number) 数字转BigInteger
null或""或空白符转换为0static byte[]
toBytes
(int value) int值转byte数组,使用大端字节序(高位字节在前,低位字节在后)
见:http://www.ruanyifeng.com/blog/2016/11/byte-order.htmlstatic int
toInt
(byte[] bytes) byte数组转int,使用大端字节序(高位字节在前,低位字节在后)
见:http://www.ruanyifeng.com/blog/2016/11/byte-order.htmlstatic String
static String
static String
数字转字符串
调用Object.toString()
,并去除尾小数点儿后多余的0static String
toStr
(BigDecimal bigDecimal) static String
toStr
(BigDecimal bigDecimal, boolean isStripTrailingZeros) static byte[]
toUnsignedByteArray
(int length, BigInteger value) 以无符号字节数组的形式返回传入值。static byte[]
toUnsignedByteArray
(BigInteger value) 以无符号字节数组的形式返回传入值。static int
zero2One
(int value) 如果给定值为0,返回1,否则返回原值
-
Constructor Details
-
NumberUtil
public NumberUtil()
-
-
Method Details
-
percentToDouble
-
add
public static double add(float v1, float v2) 提供精确的加法运算- Parameters:
v1
- 被加数v2
- 加数- Returns:
- 和
-
add
public static double add(float v1, double v2) 提供精确的加法运算- Parameters:
v1
- 被加数v2
- 加数- Returns:
- 和
-
add
public static double add(double v1, float v2) 提供精确的加法运算- Parameters:
v1
- 被加数v2
- 加数- Returns:
- 和
-
add
public static double add(double v1, double v2) 提供精确的加法运算- Parameters:
v1
- 被加数v2
- 加数- Returns:
- 和
-
add
提供精确的加法运算- Parameters:
v1
- 被加数v2
- 加数- Returns:
- 和
- Since:
- 3.1.1
-
add
提供精确的加法运算
如果传入多个值为null或者空,则返回0- Parameters:
v1
- 被加数v2
- 加数- Returns:
- 和
-
add
提供精确的加法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被加值- Returns:
- 和
- Since:
- 4.0.0
-
add
提供精确的加法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被加值- Returns:
- 和
- Since:
- 4.0.0
-
add
提供精确的加法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被加值- Returns:
- 和
- Since:
- 4.0.0
-
sub
public static double sub(float v1, float v2) 提供精确的减法运算- Parameters:
v1
- 被减数v2
- 减数- Returns:
- 差
-
sub
public static double sub(float v1, double v2) 提供精确的减法运算- Parameters:
v1
- 被减数v2
- 减数- Returns:
- 差
-
sub
public static double sub(double v1, float v2) 提供精确的减法运算- Parameters:
v1
- 被减数v2
- 减数- Returns:
- 差
-
sub
public static double sub(double v1, double v2) 提供精确的减法运算- Parameters:
v1
- 被减数v2
- 减数- Returns:
- 差
-
sub
提供精确的减法运算- Parameters:
v1
- 被减数v2
- 减数- Returns:
- 差
-
sub
提供精确的减法运算
如果传入多个值为null或者空,则返回0- Parameters:
v1
- 被减数v2
- 减数- Returns:
- 差
-
sub
提供精确的减法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被减值- Returns:
- 差
- Since:
- 4.0.0
-
sub
提供精确的减法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被减值- Returns:
- 差
- Since:
- 4.0.0
-
sub
提供精确的减法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被减值- Returns:
- 差
- Since:
- 4.0.0
-
mul
public static double mul(float v1, float v2) 提供精确的乘法运算- Parameters:
v1
- 被乘数v2
- 乘数- Returns:
- 积
-
mul
public static double mul(float v1, double v2) 提供精确的乘法运算- Parameters:
v1
- 被乘数v2
- 乘数- Returns:
- 积
-
mul
public static double mul(double v1, float v2) 提供精确的乘法运算- Parameters:
v1
- 被乘数v2
- 乘数- Returns:
- 积
-
mul
public static double mul(double v1, double v2) 提供精确的乘法运算- Parameters:
v1
- 被乘数v2
- 乘数- Returns:
- 积
-
mul
提供精确的乘法运算
如果传入多个值为null或者空,则返回0- Parameters:
v1
- 被乘数v2
- 乘数- Returns:
- 积
-
mul
提供精确的乘法运算
如果传入多个值为null或者空,则返回0- Parameters:
v1
- 被乘数v2
- 乘数- Returns:
- 积
-
mul
提供精确的乘法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被乘值- Returns:
- 积
- Since:
- 4.0.0
-
mul
提供精确的乘法运算- Parameters:
v1
- 被乘数v2
- 乘数- Returns:
- 积
- Since:
- 3.0.8
-
mul
提供精确的乘法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被乘值- Returns:
- 积
- Since:
- 4.0.0
-
mul
提供精确的乘法运算
如果传入多个值为null或者空,则返回0- Parameters:
values
- 多个被乘值- Returns:
- 积
- Since:
- 4.0.0
-
div
public static double div(float v1, float v2) 提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数- Returns:
- 两个参数的商
-
div
public static double div(float v1, double v2) 提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数- Returns:
- 两个参数的商
-
div
public static double div(double v1, float v2) 提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数- Returns:
- 两个参数的商
-
div
public static double div(double v1, double v2) 提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数- Returns:
- 两个参数的商
- Since:
- 3.1.0
-
div
提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数- Returns:
- 两个参数的商
-
div
public static double div(float v1, float v2, int scale) 提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值- Returns:
- 两个参数的商
-
div
public static double div(float v1, double v2, int scale) 提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值- Returns:
- 两个参数的商
-
div
public static double div(double v1, float v2, int scale) 提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值- Returns:
- 两个参数的商
-
div
public static double div(double v1, double v2, int scale) 提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值- Returns:
- 两个参数的商
- Since:
- 3.1.0
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 两个参数的商
- Since:
- 3.1.0
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 两个参数的商
-
div
提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度- Parameters:
v1
- 被除数v2
- 除数scale
- 精确度,如果为负值,取绝对值roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 两个参数的商
- Since:
- 3.0.9
-
ceilDiv
public static int ceilDiv(int v1, int v2) 补充Math.ceilDiv() JDK8中添加了和Math.floorDiv()但却没有ceilDiv()- Parameters:
v1
- 被除数v2
- 除数- Returns:
- 两个参数的商
- Since:
- 5.3.3
-
round
- Parameters:
v
- 值scale
- 保留小数位数- Returns:
- 新值
-
roundStr
- Parameters:
v
- 值scale
- 保留小数位数- Returns:
- 新值
-
round
- Parameters:
numberStr
- 数字值的字符串表现形式scale
- 保留小数位数- Returns:
- 新值
-
round
- Parameters:
number
- 数字值scale
- 保留小数位数- Returns:
- 新值
- Since:
- 4.1.0
-
roundStr
- Parameters:
numberStr
- 数字值的字符串表现形式scale
- 保留小数位数- Returns:
- 新值
- Since:
- 3.2.2
-
round
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567- Parameters:
v
- 值scale
- 保留小数位数roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 新值
-
roundStr
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567- Parameters:
v
- 值scale
- 保留小数位数roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 新值
- Since:
- 3.2.2
-
round
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567- Parameters:
numberStr
- 数字值的字符串表现形式scale
- 保留小数位数,如果传入小于0,则默认0roundingMode
- 保留小数的模式RoundingMode
,如果传入null则默认四舍五入- Returns:
- 新值
-
round
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567- Parameters:
number
- 数字值scale
- 保留小数位数,如果传入小于0,则默认0roundingMode
- 保留小数的模式RoundingMode
,如果传入null则默认四舍五入- Returns:
- 新值
-
roundStr
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567- Parameters:
numberStr
- 数字值的字符串表现形式scale
- 保留小数位数roundingMode
- 保留小数的模式RoundingMode
- Returns:
- 新值
- Since:
- 3.2.2
-
roundHalfEven
四舍六入五成双计算法四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
算法规则: 四舍六入五考虑, 五后非零就进一, 五后皆零看奇偶, 五前为偶应舍去, 五前为奇要进一。
- Parameters:
number
- 需要科学计算的数据scale
- 保留的小数位- Returns:
- 结果
- Since:
- 4.1.0
-
roundHalfEven
四舍六入五成双计算法四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
算法规则: 四舍六入五考虑, 五后非零就进一, 五后皆零看奇偶, 五前为偶应舍去, 五前为奇要进一。
- Parameters:
value
- 需要科学计算的数据scale
- 保留的小数位- Returns:
- 结果
- Since:
- 4.1.0
-
roundDown
保留固定小数位数,舍去多余位数- Parameters:
number
- 需要科学计算的数据scale
- 保留的小数位- Returns:
- 结果
- Since:
- 4.1.0
-
roundDown
保留固定小数位数,舍去多余位数- Parameters:
value
- 需要科学计算的数据scale
- 保留的小数位- Returns:
- 结果
- Since:
- 4.1.0
-
decimalFormat
- Parameters:
pattern
- 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
- 0 =》 取一位整数
- 0.00 =》 取一位整数和两位小数
- 00.000 =》 取两位整数和三位小数
- # =》 取所有整数部分
- #.##% =》 以百分比方式计数,并取两位小数
- #.#####E0 =》 显示为科学计数法,并取五位小数
- ,### =》 每三位以逗号进行分隔,例如:299,792,458
- 光速大小为每秒,###米 =》 将格式嵌入文本
value
- 值- Returns:
- 格式化后的值
-
decimalFormat
- Parameters:
pattern
- 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
- 0 =》 取一位整数
- 0.00 =》 取一位整数和两位小数
- 00.000 =》 取两位整数和三位小数
- # =》 取所有整数部分
- #.##% =》 以百分比方式计数,并取两位小数
- #.#####E0 =》 显示为科学计数法,并取五位小数
- ,### =》 每三位以逗号进行分隔,例如:299,792,458
- 光速大小为每秒,###米 =》 将格式嵌入文本
value
- 值- Returns:
- 格式化后的值
- Since:
- 3.0.5
-
decimalFormat
- Parameters:
pattern
- 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
- 0 =》 取一位整数
- 0.00 =》 取一位整数和两位小数
- 00.000 =》 取两位整数和三位小数
- # =》 取所有整数部分
- #.##% =》 以百分比方式计数,并取两位小数
- #.#####E0 =》 显示为科学计数法,并取五位小数
- ,### =》 每三位以逗号进行分隔,例如:299,792,458
- 光速大小为每秒,###米 =》 将格式嵌入文本
value
- 值,支持BigDecimal、BigInteger、Number等类型- Returns:
- 格式化后的值
- Since:
- 5.1.6
-
decimalFormat
- Parameters:
pattern
- 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
- 0 =》 取一位整数
- 0.00 =》 取一位整数和两位小数
- 00.000 =》 取两位整数和三位小数
- # =》 取所有整数部分
- #.##% =》 以百分比方式计数,并取两位小数
- #.#####E0 =》 显示为科学计数法,并取五位小数
- ,### =》 每三位以逗号进行分隔,例如:299,792,458
- 光速大小为每秒,###米 =》 将格式嵌入文本
value
- 值,支持BigDecimal、BigInteger、Number等类型roundingMode
- 保留小数的方式枚举- Returns:
- 格式化后的值
- Since:
- 5.6.5
-
decimalFormatMoney
格式化金额输出,每三位用逗号分隔- Parameters:
value
- 金额- Returns:
- 格式化后的值
- Since:
- 3.0.9
-
formatPercent
格式化百分比,小数采用四舍五入方式- Parameters:
number
- 值scale
- 保留小数位数- Returns:
- 百分比
- Since:
- 3.2.3
-
isNumber
是否为数字,支持包括:1、10进制 2、16进制数字(0x开头) 3、科学计数法形式(1234E3) 4、类型标识形式(123D) 5、正负数标识形式(+123、-234)
- Parameters:
str
- 字符串值- Returns:
- 是否为数字
-
isInteger
判断String是否是整数
支持10进制- Parameters:
s
- String- Returns:
- 是否为整数
-
isLong
判断字符串是否是Long类型
支持10进制- Parameters:
s
- String- Returns:
- 是否为
Long
类型 - Since:
- 4.0.0
-
isDouble
判断字符串是否是浮点数- Parameters:
s
- String- Returns:
- 是否为
Double
类型
-
isPrimes
public static boolean isPrimes(int n) 是否是质数(素数)
质数表的质数又称素数。指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。- Parameters:
n
- 数字- Returns:
- 是否是质数
-
generateRandomNumber
public static int[] generateRandomNumber(int begin, int end, int size, int[] seed) 生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组- Parameters:
begin
- 最小数字(包含该数)end
- 最大数字(不包含该数)size
- 指定产生随机数的个数seed
- 种子,用于取随机数的int池- Returns:
- 随机int数组
- Since:
- 5.4.5
-
generateBySet
生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组- Parameters:
begin
- 最小数字(包含该数)end
- 最大数字(不包含该数)size
- 指定产生随机数的个数- Returns:
- 随机int数组
-
range
public static int[] range(int stop) 从0开始给定范围内的整数列表,步进为1- Parameters:
stop
- 结束(包含)- Returns:
- 整数列表
- Since:
- 3.3.1
-
range
public static int[] range(int start, int stop) 给定范围内的整数列表,步进为1- Parameters:
start
- 开始(包含)stop
- 结束(包含)- Returns:
- 整数列表
-
range
public static int[] range(int start, int stop, int step) 给定范围内的整数列表- Parameters:
start
- 开始(包含)stop
- 结束(包含)step
- 步进- Returns:
- 整数列表
-
appendRange
将给定范围内的整数添加到已有集合中,步进为1- Parameters:
start
- 开始(包含)stop
- 结束(包含)values
- 集合- Returns:
- 集合
-
appendRange
public static Collection<Integer> appendRange(int start, int stop, int step, Collection<Integer> values) 将给定范围内的整数添加到已有集合中- Parameters:
start
- 开始(包含)stop
- 结束(包含)step
- 步进values
- 集合- Returns:
- 集合
-
factorial
计算阶乘n! = n * (n-1) * ... * 2 * 1
- Parameters:
n
- 阶乘起始- Returns:
- 结果
- Since:
- 5.6.0
-
factorial
计算范围阶乘factorial(start, end) = start * (start - 1) * ... * (end + 1)
- Parameters:
start
- 阶乘起始(包含)end
- 阶乘结束,必须小于起始(不包括)- Returns:
- 结果
- Since:
- 5.6.0
-
factorial
public static long factorial(long start, long end) 计算范围阶乘factorial(start, end) = start * (start - 1) * ... * (end + 1)
- Parameters:
start
- 阶乘起始(包含)end
- 阶乘结束,必须小于起始(不包括)- Returns:
- 结果
- Since:
- 4.1.0
-
factorial
public static long factorial(long n) 计算阶乘n! = n * (n-1) * ... * 2 * 1
- Parameters:
n
- 阶乘起始- Returns:
- 结果
-
sqrt
public static long sqrt(long x) 平方根算法
推荐使用Math.sqrt(double)
- Parameters:
x
- 值- Returns:
- 平方根
-
processMultiple
public static int processMultiple(int selectNum, int minNum) 可以用于计算双色球、大乐透注数的方法
比如大乐透35选5可以这样调用processMultiple(7,5); 就是数学中的:C75=7*6/2*1- Parameters:
selectNum
- 选中小球个数minNum
- 最少要选中多少个小球- Returns:
- 注数
-
divisor
public static int divisor(int m, int n) 最大公约数- Parameters:
m
- 第一个值n
- 第二个值- Returns:
- 最大公约数
-
multiple
public static int multiple(int m, int n) 最小公倍数- Parameters:
m
- 第一个值n
- 第二个值- Returns:
- 最小公倍数
-
getBinaryStr
获得数字对应的二进制字符串- Parameters:
number
- 数字- Returns:
- 二进制字符串
-
binaryToInt
二进制转int- Parameters:
binaryStr
- 二进制字符串- Returns:
- int
-
binaryToLong
二进制转long- Parameters:
binaryStr
- 二进制字符串- Returns:
- long
-
compare
public static int compare(char x, char y) 比较两个值的大小- Parameters:
x
- 第一个值y
- 第二个值- Returns:
- x==y返回0,x<y返回-1,x>y返回1
- Since:
- 3.0.1
- See Also:
-
compare
public static int compare(double x, double y) 比较两个值的大小- Parameters:
x
- 第一个值y
- 第二个值- Returns:
- x==y返回0,x<y返回-1,x>y返回1
- Since:
- 3.0.1
- See Also:
-
compare
public static int compare(int x, int y) 比较两个值的大小- Parameters:
x
- 第一个值y
- 第二个值- Returns:
- x==y返回0,x<y返回-1,x>y返回1
- Since:
- 3.0.1
- See Also:
-
compare
public static int compare(long x, long y) 比较两个值的大小- Parameters:
x
- 第一个值y
- 第二个值- Returns:
- x==y返回0,x<y返回-1,x>y返回1
- Since:
- 3.0.1
- See Also:
-
compare
public static int compare(short x, short y) 比较两个值的大小- Parameters:
x
- 第一个值y
- 第二个值- Returns:
- x==y返回0,x<y返回-1,x>y返回1
- Since:
- 3.0.1
- See Also:
-
compare
public static int compare(byte x, byte y) 比较两个值的大小- Parameters:
x
- 第一个值y
- 第二个值- Returns:
- x==y返回0,x<y返回-1,x>y返回1
- Since:
- 3.0.1
- See Also:
-
isGreater
比较大小,参数1 > 参数2 返回true- Parameters:
bigNum1
- 数字1bigNum2
- 数字2- Returns:
- 是否大于
- Since:
- 3, 0.9
-
isGreaterOrEqual
比较大小,参数1 >= 参数2 返回true- Parameters:
bigNum1
- 数字1bigNum2
- 数字2- Returns:
- 是否大于等于
- Since:
- 3, 0.9
-
isLess
比较大小,参数1 < 参数2 返回true- Parameters:
bigNum1
- 数字1bigNum2
- 数字2- Returns:
- 是否小于
- Since:
- 3, 0.9
-
isLessOrEqual
比较大小,参数1<=参数2 返回true- Parameters:
bigNum1
- 数字1bigNum2
- 数字2- Returns:
- 是否小于等于
- Since:
- 3, 0.9
-
equals
public static boolean equals(double num1, double num2) - Parameters:
num1
- 数字1num2
- 数字2- Returns:
- 是否相等
- Since:
- 5.4.2
-
equals
public static boolean equals(float num1, float num2) - Parameters:
num1
- 数字1num2
- 数字2- Returns:
- 是否相等
- Since:
- 5.4.5
-
equals
- Parameters:
bigNum1
- 数字1bigNum2
- 数字2- Returns:
- 是否相等
-
toStr
数字转字符串
调用Object.toString()
,并去除尾小数点儿后多余的0- Parameters:
number
- A NumberdefaultValue
- 如果number参数为null
,返回此默认值- Returns:
- A String.
- Since:
- 3.0.9
-
toStr
- Parameters:
number
- A Number- Returns:
- A String.
-
toStr
- Parameters:
number
- A NumberisStripTrailingZeros
- 是否去除末尾多余0,例如5.0返回5- Returns:
- A String.
-
toStr
- Parameters:
bigDecimal
- ABigDecimal
- Returns:
- A String.
- Since:
- 5.4.6
-
toStr
- Parameters:
bigDecimal
- ABigDecimal
isStripTrailingZeros
- 是否去除末尾多余0,例如5.0返回5- Returns:
- A String.
- Since:
- 5.4.6
-
toBigDecimal
- Parameters:
number
- 数字- Returns:
BigDecimal
- Since:
- 4.0.9
-
toBigDecimal
数字转BigDecimal
null或""或空白符转换为0- Parameters:
number
- 数字字符串- Returns:
BigDecimal
- Since:
- 4.0.9
-
toBigInteger
数字转BigInteger
null转换为0- Parameters:
number
- 数字- Returns:
BigInteger
- Since:
- 5.4.5
-
toBigInteger
数字转BigInteger
null或""或空白符转换为0- Parameters:
number
- 数字字符串- Returns:
BigInteger
- Since:
- 5.4.5
-
count
public static int count(int total, int part) 计算等份个数- Parameters:
total
- 总数part
- 每份的个数- Returns:
- 分成了几份
- Since:
- 3.0.6
-
null2Zero
空转0- Parameters:
decimal
-BigDecimal
,可以为null
- Returns:
BigDecimal
参数为空时返回0的值- Since:
- 3.0.9
-
zero2One
public static int zero2One(int value) 如果给定值为0,返回1,否则返回原值- Parameters:
value
- 值- Returns:
- 1或非0值
- Since:
- 3.1.2
-
newBigInteger
创建BigInteger
,支持16进制、10进制和8进制,如果传入空白串返回null
from Apache Common Lang- Parameters:
str
- 数字字符串- Returns:
BigInteger
- Since:
- 3.2.1
-
isBeside
public static boolean isBeside(long number1, long number2) 判断两个数字是否相邻,例如1和2相邻,1和3不相邻
判断方法为做差取绝对值判断是否为1- Parameters:
number1
- 数字1number2
- 数字2- Returns:
- 是否相邻
- Since:
- 4.0.7
-
isBeside
public static boolean isBeside(int number1, int number2) 判断两个数字是否相邻,例如1和2相邻,1和3不相邻
判断方法为做差取绝对值判断是否为1- Parameters:
number1
- 数字1number2
- 数字2- Returns:
- 是否相邻
- Since:
- 4.0.7
-
partValue
public static int partValue(int total, int partCount) 把给定的总数平均分成N份,返回每份的个数
当除以分数有余数时每份+1- Parameters:
total
- 总数partCount
- 份数- Returns:
- 每份的个数
- Since:
- 4.0.7
-
partValue
public static int partValue(int total, int partCount, boolean isPlusOneWhenHasRem) 把给定的总数平均分成N份,返回每份的个数
如果isPlusOneWhenHasRem为true,则当除以分数有余数时每份+1,否则丢弃余数部分- Parameters:
total
- 总数partCount
- 份数isPlusOneWhenHasRem
- 在有余数时是否每份+1- Returns:
- 每份的个数
- Since:
- 4.0.7
-
pow
提供精确的幂运算- Parameters:
number
- 底数n
- 指数- Returns:
- 幂的积
- Since:
- 4.1.0
-
pow
提供精确的幂运算- Parameters:
number
- 底数n
- 指数- Returns:
- 幂的积
- Since:
- 4.1.0
-
isPowerOfTwo
public static boolean isPowerOfTwo(long n) 判断一个整数是否是2的幂- Parameters:
n
- 待验证的整数- Returns:
- 如果n是2的幂返回true, 反之返回false
-
parseInt
解析转换数字字符串为int型数字,规则如下:1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、其它情况按照10进制转换 4、空串返回0 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分
- Parameters:
number
- 数字,支持0x开头、0开头和普通十进制- Returns:
- int
- Throws:
NumberFormatException
- 数字格式异常- Since:
- 4.1.4
-
parseLong
解析转换数字字符串为long型数字,规则如下:1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、空串返回0 4、其它情况按照10进制转换 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分
- Parameters:
number
- 数字,支持0x开头、0开头和普通十进制- Returns:
- long
- Since:
- 4.1.4
-
parseFloat
解析转换数字字符串为long型数字,规则如下:1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
- Parameters:
number
- 数字,支持0x开头、0开头和普通十进制- Returns:
- long
- Since:
- 5.5.5
-
parseDouble
解析转换数字字符串为long型数字,规则如下:1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
- Parameters:
number
- 数字,支持0x开头、0开头和普通十进制- Returns:
- long
- Since:
- 5.5.5
-
parseNumber
将指定字符串转换为Number
对象- Parameters:
numberStr
- Number字符串- Returns:
- Number对象
- Throws:
NumberFormatException
- 包装了ParseException
,当给定的数字字符串无法解析时抛出- Since:
- 4.1.15
-
toBytes
public static byte[] toBytes(int value) int值转byte数组,使用大端字节序(高位字节在前,低位字节在后)
见:http://www.ruanyifeng.com/blog/2016/11/byte-order.html- Parameters:
value
- 值- Returns:
- byte数组
- Since:
- 4.4.5
-
toInt
public static int toInt(byte[] bytes) byte数组转int,使用大端字节序(高位字节在前,低位字节在后)
见:http://www.ruanyifeng.com/blog/2016/11/byte-order.html- Parameters:
bytes
- byte数组- Returns:
- int
- Since:
- 4.4.5
-
toUnsignedByteArray
以无符号字节数组的形式返回传入值。- Parameters:
value
- 需要转换的值- Returns:
- 无符号bytes
- Since:
- 4.5.0
-
toUnsignedByteArray
以无符号字节数组的形式返回传入值。- Parameters:
length
- bytes长度value
- 需要转换的值- Returns:
- 无符号bytes
- Since:
- 4.5.0
-
fromUnsignedByteArray
无符号bytes转BigInteger
- Parameters:
buf
- buf 无符号bytes- Returns:
BigInteger
- Since:
- 4.5.0
-
fromUnsignedByteArray
无符号bytes转BigInteger
- Parameters:
buf
- 无符号bytesoff
- 起始位置length
- 长度- Returns:
BigInteger
-
isValidNumber
检查是否为有效的数字
检查Double和Float是否为无限大,或者Not a Number
非数字类型和Null将返回true- Parameters:
number
- 被检查类型- Returns:
- 检查结果,非数字类型和Null将返回true
- Since:
- 4.6.7
-
isValid
public static boolean isValid(double number) 检查是否为有效的数字
检查double否为无限大,或者Not a Number(NaN)- Parameters:
number
- 被检查double- Returns:
- 检查结果
- Since:
- 5.7.0
-
isValid
public static boolean isValid(float number) 检查是否为有效的数字
检查double否为无限大,或者Not a Number(NaN)- Parameters:
number
- 被检查double- Returns:
- 检查结果
- Since:
- 5.7.0
-
calculate
计算数学表达式的值,只支持加减乘除和取余
如:calculate("(0*1--3)-5/-4-(3*(-2.13))") -》 10.64
- Parameters:
expression
- 数学表达式- Returns:
- 结果
- Since:
- 5.7.6
-