Class NumberUtil

java.lang.Object
com.luna.common.math.NumberUtil

public class NumberUtil extends Object
数字工具类
对于精确值计算应该使用 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

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static 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
    add(Double v1, Double v2)
    提供精确的加法运算
    static BigDecimal
    add(Number... values)
    提供精确的加法运算
    如果传入多个值为null或者空,则返回0
    static BigDecimal
    add(Number v1, Number v2)
    提供精确的加法运算
    如果传入多个值为null或者空,则返回0
    static BigDecimal
    add(String... values)
    提供精确的加法运算
    如果传入多个值为null或者空,则返回0
    static BigDecimal
    add(BigDecimal... values)
    提供精确的加法运算
    如果传入多个值为null或者空,则返回0
    appendRange(int start, int stop, int step, Collection<Integer> values)
    将给定范围内的整数添加到已有集合中
    appendRange(int start, int stop, Collection<Integer> values)
    将给定范围内的整数添加到已有集合中,步进为1
    static int
    binaryToInt(String binaryStr)
    二进制转int
    static long
    binaryToLong(String binaryStr)
    二进制转long
    static double
    calculate(String expression)
    计算数学表达式的值,只支持加减乘除和取余
    如:
    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)
    格式化double
    DecimalFormat 做封装
    static String
    decimalFormat(String pattern, long value)
    格式化double
    DecimalFormat 做封装
    static String
    decimalFormat(String pattern, Object value)
    格式化double
    DecimalFormat 做封装
    static String
    decimalFormat(String pattern, Object value, RoundingMode roundingMode)
    格式化double
    DecimalFormat 做封装
    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
    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 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 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)
    比较大小,值相等 返回true
    此方法通过调用Double.doubleToLongBits(double)方法来判断是否相等
    此方法判断值相等时忽略精度的,即0.00 == 0
    static boolean
    equals(float num1, float num2)
    比较大小,值相等 返回true
    此方法通过调用Float.floatToIntBits(float)方法来判断是否相等
    此方法判断值相等时忽略精度的,即0.00 == 0
    static boolean
    equals(BigDecimal bigNum1, BigDecimal bigNum2)
    比较大小,值相等 返回true
    此方法通过调用BigDecimal.compareTo(BigDecimal)方法来判断是否相等
    此方法判断值相等时忽略精度的,即0.00 == 0
    static long
    factorial(long n)
    计算阶乘
    static long
    factorial(long start, long end)
    计算范围阶乘
    static BigInteger
    计算阶乘
    static BigInteger
    计算范围阶乘
    static String
    formatPercent(double number, int scale)
    格式化百分比,小数采用四舍五入方式
    static BigInteger
    无符号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
    获得数字对应的二进制字符串
    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
    判断字符串是否是浮点数
    static boolean
    isGreater(BigDecimal bigNum1, BigDecimal bigNum2)
    比较大小,参数1 > 参数2 返回true
    static boolean
    比较大小,参数1 >= 参数2 返回true
    static boolean
    判断String是否是整数
    支持10进制
    static boolean
    isLess(BigDecimal bigNum1, BigDecimal bigNum2)
    比较大小,参数1 < 参数2 返回true
    static boolean
    isLessOrEqual(BigDecimal bigNum1, BigDecimal bigNum2)
    比较大小,参数1<=参数2 返回true
    static boolean
    判断字符串是否是Long类型
    支持10进制
    static boolean
    是否为数字,支持包括:
    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
    检查是否为有效的数字
    检查Double和Float是否为无限大,或者Not a Number
    非数字类型和Null将返回true
    static 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
    mul(Double v1, Double v2)
    提供精确的乘法运算
    如果传入多个值为null或者空,则返回0
    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 BigDecimal
    mul(BigDecimal... values)
    提供精确的乘法运算
    如果传入多个值为null或者空,则返回0
    static int
    multiple(int m, int n)
    最小公倍数
    static BigInteger
    创建BigInteger,支持16进制、10进制和8进制,如果传入空白串返回null
    from Apache Common Lang
    static BigDecimal
    空转0
    static double
    解析转换数字字符串为long型数字,规则如下:
    static float
    解析转换数字字符串为long型数字,规则如下:
    static int
    parseInt(String number)
    解析转换数字字符串为int型数字,规则如下:
    static long
    parseLong(String number)
    解析转换数字字符串为long型数字,规则如下:
    static Number
    parseNumber(String numberStr)
    将指定字符串转换为Number 对象
    static int
    partValue(int total, int partCount)
    把给定的总数平均分成N份,返回每份的个数
    当除以分数有余数时每份+1
    static int
    partValue(int total, int partCount, boolean isPlusOneWhenHasRem)
    把给定的总数平均分成N份,返回每份的个数
    如果isPlusOneWhenHasRem为true,则当除以分数有余数时每份+1,否则丢弃余数部分
    static Double
     
    static BigDecimal
    pow(Number number, int n)
    提供精确的幂运算
    static BigDecimal
    pow(BigDecimal 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(double v, int scale)
    保留固定位数小数
    采用四舍五入策略 RoundingMode.HALF_UP
    例如保留2位小数:123.456789 =》 123.46
    static BigDecimal
    round(double v, int scale, RoundingMode roundingMode)
    保留固定位数小数
    例如保留四位小数:123.456789 =》 123.4567
    static BigDecimal
    round(String numberStr, int scale)
    保留固定位数小数
    采用四舍五入策略 RoundingMode.HALF_UP
    例如保留2位小数:123.456789 =》 123.46
    static BigDecimal
    round(String numberStr, int scale, RoundingMode roundingMode)
    保留固定位数小数
    例如保留四位小数:123.456789 =》 123.4567
    static BigDecimal
    round(BigDecimal number, int scale)
    保留固定位数小数
    采用四舍五入策略 RoundingMode.HALF_UP
    例如保留2位小数:123.456789 =》 123.46
    static BigDecimal
    round(BigDecimal number, int scale, RoundingMode roundingMode)
    保留固定位数小数
    例如保留四位小数:123.456789 =》 123.4567
    static BigDecimal
    roundDown(Number number, int scale)
    保留固定小数位数,舍去多余位数
    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)
    保留固定位数小数
    采用四舍五入策略 RoundingMode.HALF_UP
    例如保留2位小数:123.456789 =》 123.46
    static String
    roundStr(double v, int scale, RoundingMode roundingMode)
    保留固定位数小数
    例如保留四位小数:123.456789 =》 123.4567
    static String
    roundStr(String numberStr, int scale)
    保留固定位数小数
    采用四舍五入策略 RoundingMode.HALF_UP
    例如保留2位小数:123.456789 =》 123.46
    static String
    roundStr(String numberStr, int scale, RoundingMode roundingMode)
    保留固定位数小数
    例如保留四位小数:123.456789 =》 123.4567
    static 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
    sub(Double v1, Double 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
    sub(BigDecimal... values)
    提供精确的减法运算
    如果传入多个值为null或者空,则返回0
    static BigDecimal
    数字转BigDecimal
    Float、Double等有精度问题,转换为字符串后再转换
    null转换为0
    static BigDecimal
    数字转BigDecimal
    null或""或空白符转换为0
    static BigInteger
    数字转BigInteger
    null转换为0
    static BigInteger
    数字转BigInteger
    null或""或空白符转换为0
    static byte[]
    toBytes(int value)
    int值转byte数组,使用大端字节序(高位字节在前,低位字节在后)
    见:http://www.ruanyifeng.com/blog/2016/11/byte-order.html
    static int
    toInt(byte[] bytes)
    byte数组转int,使用大端字节序(高位字节在前,低位字节在后)
    见:http://www.ruanyifeng.com/blog/2016/11/byte-order.html
    static String
    toStr(Number number)
    数字转字符串
    调用Object.toString()BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
    static String
    toStr(Number number, boolean isStripTrailingZeros)
    数字转字符串
    调用Object.toString()BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
    static String
    toStr(Number number, String defaultValue)
    数字转字符串
    调用Object.toString(),并去除尾小数点儿后多余的0
    static String
    toStr(BigDecimal bigDecimal)
    BigDecimal数字转字符串
    调用BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
    static String
    toStr(BigDecimal bigDecimal, boolean isStripTrailingZeros)
    BigDecimal数字转字符串
    调用BigDecimal.toPlainString(),可选去除尾小数点儿后多余的0
    static byte[]
    toUnsignedByteArray(int length, BigInteger value)
    以无符号字节数组的形式返回传入值。
    static byte[]
    以无符号字节数组的形式返回传入值。
    static int
    zero2One(int value)
    如果给定值为0,返回1,否则返回原值

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • NumberUtil

      public NumberUtil()
  • Method Details

    • percentToDouble

      public static Double percentToDouble(String percent)
    • 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

      public static double add(Double v1, Double v2)
      提供精确的加法运算
      Parameters:
      v1 - 被加数
      v2 - 加数
      Returns:
      Since:
      3.1.1
    • add

      public static BigDecimal add(Number v1, Number v2)
      提供精确的加法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      v1 - 被加数
      v2 - 加数
      Returns:
    • add

      public static BigDecimal add(Number... values)
      提供精确的加法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      values - 多个被加值
      Returns:
      Since:
      4.0.0
    • add

      public static BigDecimal add(String... values)
      提供精确的加法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      values - 多个被加值
      Returns:
      Since:
      4.0.0
    • add

      public static BigDecimal add(BigDecimal... values)
      提供精确的加法运算
      如果传入多个值为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

      public static double sub(Double v1, Double v2)
      提供精确的减法运算
      Parameters:
      v1 - 被减数
      v2 - 减数
      Returns:
    • sub

      public static BigDecimal sub(Number v1, Number v2)
      提供精确的减法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      v1 - 被减数
      v2 - 减数
      Returns:
    • sub

      public static BigDecimal sub(Number... values)
      提供精确的减法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      values - 多个被减值
      Returns:
      Since:
      4.0.0
    • sub

      public static BigDecimal sub(String... values)
      提供精确的减法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      values - 多个被减值
      Returns:
      Since:
      4.0.0
    • sub

      public static BigDecimal sub(BigDecimal... values)
      提供精确的减法运算
      如果传入多个值为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

      public static double mul(Double v1, Double v2)
      提供精确的乘法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      v1 - 被乘数
      v2 - 乘数
      Returns:
    • mul

      public static BigDecimal mul(Number v1, Number v2)
      提供精确的乘法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      v1 - 被乘数
      v2 - 乘数
      Returns:
    • mul

      public static BigDecimal mul(Number... values)
      提供精确的乘法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      values - 多个被乘值
      Returns:
      Since:
      4.0.0
    • mul

      public static BigDecimal mul(String v1, String v2)
      提供精确的乘法运算
      Parameters:
      v1 - 被乘数
      v2 - 乘数
      Returns:
      Since:
      3.0.8
    • mul

      public static BigDecimal mul(String... values)
      提供精确的乘法运算
      如果传入多个值为null或者空,则返回0
      Parameters:
      values - 多个被乘值
      Returns:
      Since:
      4.0.0
    • mul

      public static BigDecimal mul(BigDecimal... values)
      提供精确的乘法运算
      如果传入多个值为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

      public static double div(Double v1, Double v2)
      提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
      Parameters:
      v1 - 被除数
      v2 - 除数
      Returns:
      两个参数的商
    • div

      public static BigDecimal div(Number v1, Number v2)
      提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后10位,后面的四舍五入
      Parameters:
      v1 - 被除数
      v2 - 除数
      Returns:
      两个参数的商
      Since:
      3.1.0
    • div

      public static BigDecimal div(String v1, String v2)
      提供(相对)精确的除法运算,当发生除不尽的情况的时候,精确到小数点后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

      public static double div(Double v1, Double v2, int scale)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      Returns:
      两个参数的商
    • div

      public static BigDecimal div(Number v1, Number v2, int scale)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      Returns:
      两个参数的商
      Since:
      3.1.0
    • div

      public static BigDecimal div(String v1, String v2, int scale)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度,后面的四舍五入
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      Returns:
      两个参数的商
    • div

      public static double div(float v1, float v2, int scale, RoundingMode roundingMode)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      两个参数的商
    • div

      public static double div(float v1, double v2, int scale, RoundingMode roundingMode)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      两个参数的商
    • div

      public static double div(double v1, float v2, int scale, RoundingMode roundingMode)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      两个参数的商
    • div

      public static double div(double v1, double v2, int scale, RoundingMode roundingMode)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      两个参数的商
    • div

      public static double div(Double v1, Double v2, int scale, RoundingMode roundingMode)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      两个参数的商
    • div

      public static BigDecimal div(Number v1, Number v2, int scale, RoundingMode roundingMode)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      两个参数的商
      Since:
      3.1.0
    • div

      public static BigDecimal div(String v1, String v2, int scale, RoundingMode roundingMode)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由scale指定精确度
      Parameters:
      v1 - 被除数
      v2 - 除数
      scale - 精确度,如果为负值,取绝对值
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      两个参数的商
    • div

      public static BigDecimal div(BigDecimal v1, BigDecimal v2, int scale, RoundingMode roundingMode)
      提供(相对)精确的除法运算,当发生除不尽的情况时,由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

      public static BigDecimal round(double v, int scale)
      保留固定位数小数
      采用四舍五入策略 RoundingMode.HALF_UP
      例如保留2位小数:123.456789 =》 123.46
      Parameters:
      v - 值
      scale - 保留小数位数
      Returns:
      新值
    • roundStr

      public static String roundStr(double v, int scale)
      保留固定位数小数
      采用四舍五入策略 RoundingMode.HALF_UP
      例如保留2位小数:123.456789 =》 123.46
      Parameters:
      v - 值
      scale - 保留小数位数
      Returns:
      新值
    • round

      public static BigDecimal round(String numberStr, int scale)
      保留固定位数小数
      采用四舍五入策略 RoundingMode.HALF_UP
      例如保留2位小数:123.456789 =》 123.46
      Parameters:
      numberStr - 数字值的字符串表现形式
      scale - 保留小数位数
      Returns:
      新值
    • round

      public static BigDecimal round(BigDecimal number, int scale)
      保留固定位数小数
      采用四舍五入策略 RoundingMode.HALF_UP
      例如保留2位小数:123.456789 =》 123.46
      Parameters:
      number - 数字值
      scale - 保留小数位数
      Returns:
      新值
      Since:
      4.1.0
    • roundStr

      public static String roundStr(String numberStr, int scale)
      保留固定位数小数
      采用四舍五入策略 RoundingMode.HALF_UP
      例如保留2位小数:123.456789 =》 123.46
      Parameters:
      numberStr - 数字值的字符串表现形式
      scale - 保留小数位数
      Returns:
      新值
      Since:
      3.2.2
    • round

      public static BigDecimal round(double v, int scale, RoundingMode roundingMode)
      保留固定位数小数
      例如保留四位小数:123.456789 =》 123.4567
      Parameters:
      v - 值
      scale - 保留小数位数
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      新值
    • roundStr

      public static String roundStr(double v, int scale, RoundingMode roundingMode)
      保留固定位数小数
      例如保留四位小数:123.456789 =》 123.4567
      Parameters:
      v - 值
      scale - 保留小数位数
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      新值
      Since:
      3.2.2
    • round

      public static BigDecimal round(String numberStr, int scale, RoundingMode roundingMode)
      保留固定位数小数
      例如保留四位小数:123.456789 =》 123.4567
      Parameters:
      numberStr - 数字值的字符串表现形式
      scale - 保留小数位数,如果传入小于0,则默认0
      roundingMode - 保留小数的模式 RoundingMode,如果传入null则默认四舍五入
      Returns:
      新值
    • round

      public static BigDecimal round(BigDecimal number, int scale, RoundingMode roundingMode)
      保留固定位数小数
      例如保留四位小数:123.456789 =》 123.4567
      Parameters:
      number - 数字值
      scale - 保留小数位数,如果传入小于0,则默认0
      roundingMode - 保留小数的模式 RoundingMode,如果传入null则默认四舍五入
      Returns:
      新值
    • roundStr

      public static String roundStr(String numberStr, int scale, RoundingMode roundingMode)
      保留固定位数小数
      例如保留四位小数:123.456789 =》 123.4567
      Parameters:
      numberStr - 数字值的字符串表现形式
      scale - 保留小数位数
      roundingMode - 保留小数的模式 RoundingMode
      Returns:
      新值
      Since:
      3.2.2
    • roundHalfEven

      public static BigDecimal roundHalfEven(Number number, int scale)
      四舍六入五成双计算法

      四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。

       算法规则:
       四舍六入五考虑,
       五后非零就进一,
       五后皆零看奇偶,
       五前为偶应舍去,
       五前为奇要进一。
       
      Parameters:
      number - 需要科学计算的数据
      scale - 保留的小数位
      Returns:
      结果
      Since:
      4.1.0
    • roundHalfEven

      public static BigDecimal roundHalfEven(BigDecimal value, int scale)
      四舍六入五成双计算法

      四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。

       算法规则:
       四舍六入五考虑,
       五后非零就进一,
       五后皆零看奇偶,
       五前为偶应舍去,
       五前为奇要进一。
       
      Parameters:
      value - 需要科学计算的数据
      scale - 保留的小数位
      Returns:
      结果
      Since:
      4.1.0
    • roundDown

      public static BigDecimal roundDown(Number number, int scale)
      保留固定小数位数,舍去多余位数
      Parameters:
      number - 需要科学计算的数据
      scale - 保留的小数位
      Returns:
      结果
      Since:
      4.1.0
    • roundDown

      public static BigDecimal roundDown(BigDecimal value, int scale)
      保留固定小数位数,舍去多余位数
      Parameters:
      value - 需要科学计算的数据
      scale - 保留的小数位
      Returns:
      结果
      Since:
      4.1.0
    • decimalFormat

      public static String decimalFormat(String pattern, double value)
      格式化double
      DecimalFormat 做封装
      Parameters:
      pattern - 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
      • 0 =》 取一位整数
      • 0.00 =》 取一位整数和两位小数
      • 00.000 =》 取两位整数和三位小数
      • # =》 取所有整数部分
      • #.##% =》 以百分比方式计数,并取两位小数
      • #.#####E0 =》 显示为科学计数法,并取五位小数
      • ,### =》 每三位以逗号进行分隔,例如:299,792,458
      • 光速大小为每秒,###米 =》 将格式嵌入文本
      value - 值
      Returns:
      格式化后的值
    • decimalFormat

      public static String decimalFormat(String pattern, long value)
      格式化double
      DecimalFormat 做封装
      Parameters:
      pattern - 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
      • 0 =》 取一位整数
      • 0.00 =》 取一位整数和两位小数
      • 00.000 =》 取两位整数和三位小数
      • # =》 取所有整数部分
      • #.##% =》 以百分比方式计数,并取两位小数
      • #.#####E0 =》 显示为科学计数法,并取五位小数
      • ,### =》 每三位以逗号进行分隔,例如:299,792,458
      • 光速大小为每秒,###米 =》 将格式嵌入文本
      value - 值
      Returns:
      格式化后的值
      Since:
      3.0.5
    • decimalFormat

      public static String decimalFormat(String pattern, Object value)
      格式化double
      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

      public static String decimalFormat(String pattern, Object value, RoundingMode roundingMode)
      格式化double
      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

      public static String decimalFormatMoney(double value)
      格式化金额输出,每三位用逗号分隔
      Parameters:
      value - 金额
      Returns:
      格式化后的值
      Since:
      3.0.9
    • formatPercent

      public static String formatPercent(double number, int scale)
      格式化百分比,小数采用四舍五入方式
      Parameters:
      number - 值
      scale - 保留小数位数
      Returns:
      百分比
      Since:
      3.2.3
    • isNumber

      public static boolean isNumber(CharSequence str)
      是否为数字,支持包括:
       1、10进制
       2、16进制数字(0x开头)
       3、科学计数法形式(1234E3)
       4、类型标识形式(123D)
       5、正负数标识形式(+123、-234)
       
      Parameters:
      str - 字符串值
      Returns:
      是否为数字
    • isInteger

      public static boolean isInteger(String s)
      判断String是否是整数
      支持10进制
      Parameters:
      s - String
      Returns:
      是否为整数
    • isLong

      public static boolean isLong(String s)
      判断字符串是否是Long类型
      支持10进制
      Parameters:
      s - String
      Returns:
      是否为Long类型
      Since:
      4.0.0
    • isDouble

      public static boolean isDouble(String s)
      判断字符串是否是浮点数
      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

      public static Integer[] generateBySet(int begin, int end, int size)
      生成不重复随机数 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组
      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

      public static Collection<Integer> appendRange(int start, int stop, Collection<Integer> values)
      将给定范围内的整数添加到已有集合中,步进为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

      public static BigInteger factorial(BigInteger n)
      计算阶乘

      n! = n * (n-1) * ... * 2 * 1

      Parameters:
      n - 阶乘起始
      Returns:
      结果
      Since:
      5.6.0
    • factorial

      public static BigInteger factorial(BigInteger start, BigInteger end)
      计算范围阶乘

      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

      public static String getBinaryStr(Number number)
      获得数字对应的二进制字符串
      Parameters:
      number - 数字
      Returns:
      二进制字符串
    • binaryToInt

      public static int binaryToInt(String binaryStr)
      二进制转int
      Parameters:
      binaryStr - 二进制字符串
      Returns:
      int
    • binaryToLong

      public static long binaryToLong(String binaryStr)
      二进制转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

      public static boolean isGreater(BigDecimal bigNum1, BigDecimal bigNum2)
      比较大小,参数1 > 参数2 返回true
      Parameters:
      bigNum1 - 数字1
      bigNum2 - 数字2
      Returns:
      是否大于
      Since:
      3, 0.9
    • isGreaterOrEqual

      public static boolean isGreaterOrEqual(BigDecimal bigNum1, BigDecimal bigNum2)
      比较大小,参数1 >= 参数2 返回true
      Parameters:
      bigNum1 - 数字1
      bigNum2 - 数字2
      Returns:
      是否大于等于
      Since:
      3, 0.9
    • isLess

      public static boolean isLess(BigDecimal bigNum1, BigDecimal bigNum2)
      比较大小,参数1 < 参数2 返回true
      Parameters:
      bigNum1 - 数字1
      bigNum2 - 数字2
      Returns:
      是否小于
      Since:
      3, 0.9
    • isLessOrEqual

      public static boolean isLessOrEqual(BigDecimal bigNum1, BigDecimal bigNum2)
      比较大小,参数1<=参数2 返回true
      Parameters:
      bigNum1 - 数字1
      bigNum2 - 数字2
      Returns:
      是否小于等于
      Since:
      3, 0.9
    • equals

      public static boolean equals(double num1, double num2)
      比较大小,值相等 返回true
      此方法通过调用Double.doubleToLongBits(double)方法来判断是否相等
      此方法判断值相等时忽略精度的,即0.00 == 0
      Parameters:
      num1 - 数字1
      num2 - 数字2
      Returns:
      是否相等
      Since:
      5.4.2
    • equals

      public static boolean equals(float num1, float num2)
      比较大小,值相等 返回true
      此方法通过调用Float.floatToIntBits(float)方法来判断是否相等
      此方法判断值相等时忽略精度的,即0.00 == 0
      Parameters:
      num1 - 数字1
      num2 - 数字2
      Returns:
      是否相等
      Since:
      5.4.5
    • equals

      public static boolean equals(BigDecimal bigNum1, BigDecimal bigNum2)
      比较大小,值相等 返回true
      此方法通过调用BigDecimal.compareTo(BigDecimal)方法来判断是否相等
      此方法判断值相等时忽略精度的,即0.00 == 0
      Parameters:
      bigNum1 - 数字1
      bigNum2 - 数字2
      Returns:
      是否相等
    • toStr

      public static String toStr(Number number, String defaultValue)
      数字转字符串
      调用Object.toString(),并去除尾小数点儿后多余的0
      Parameters:
      number - A Number
      defaultValue - 如果number参数为null,返回此默认值
      Returns:
      A String.
      Since:
      3.0.9
    • toStr

      public static String toStr(Number number)
      数字转字符串
      调用Object.toString()BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
      Parameters:
      number - A Number
      Returns:
      A String.
    • toStr

      public static String toStr(Number number, boolean isStripTrailingZeros)
      数字转字符串
      调用Object.toString()BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
      Parameters:
      number - A Number
      isStripTrailingZeros - 是否去除末尾多余0,例如5.0返回5
      Returns:
      A String.
    • toStr

      public static String toStr(BigDecimal bigDecimal)
      BigDecimal数字转字符串
      调用BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
      Parameters:
      bigDecimal - A BigDecimal
      Returns:
      A String.
      Since:
      5.4.6
    • toStr

      public static String toStr(BigDecimal bigDecimal, boolean isStripTrailingZeros)
      BigDecimal数字转字符串
      调用BigDecimal.toPlainString(),可选去除尾小数点儿后多余的0
      Parameters:
      bigDecimal - A BigDecimal
      isStripTrailingZeros - 是否去除末尾多余0,例如5.0返回5
      Returns:
      A String.
      Since:
      5.4.6
    • toBigDecimal

      public static BigDecimal toBigDecimal(Number number)
      数字转BigDecimal
      Float、Double等有精度问题,转换为字符串后再转换
      null转换为0
      Parameters:
      number - 数字
      Returns:
      BigDecimal
      Since:
      4.0.9
    • toBigDecimal

      public static BigDecimal toBigDecimal(String number)
      数字转BigDecimal
      null或""或空白符转换为0
      Parameters:
      number - 数字字符串
      Returns:
      BigDecimal
      Since:
      4.0.9
    • toBigInteger

      public static BigInteger toBigInteger(Number number)
      数字转BigInteger
      null转换为0
      Parameters:
      number - 数字
      Returns:
      BigInteger
      Since:
      5.4.5
    • toBigInteger

      public static BigInteger toBigInteger(String number)
      数字转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

      public static BigDecimal null2Zero(BigDecimal decimal)
      空转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

      public static BigInteger newBigInteger(String str)
      创建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 - 数字1
      number2 - 数字2
      Returns:
      是否相邻
      Since:
      4.0.7
    • isBeside

      public static boolean isBeside(int number1, int number2)
      判断两个数字是否相邻,例如1和2相邻,1和3不相邻
      判断方法为做差取绝对值判断是否为1
      Parameters:
      number1 - 数字1
      number2 - 数字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

      public static BigDecimal pow(Number number, int n)
      提供精确的幂运算
      Parameters:
      number - 底数
      n - 指数
      Returns:
      幂的积
      Since:
      4.1.0
    • pow

      public static BigDecimal pow(BigDecimal number, int n)
      提供精确的幂运算
      Parameters:
      number - 底数
      n - 指数
      Returns:
      幂的积
      Since:
      4.1.0
    • isPowerOfTwo

      public static boolean isPowerOfTwo(long n)
      判断一个整数是否是2的幂
      Parameters:
      n - 待验证的整数
      Returns:
      如果n是2的幂返回true, 反之返回false
    • parseInt

      public static int parseInt(String number) throws NumberFormatException
      解析转换数字字符串为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

      public static long parseLong(String number)
      解析转换数字字符串为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

      public static float parseFloat(String number)
      解析转换数字字符串为long型数字,规则如下:
       1、0开头的忽略开头的0
       2、空串返回0
       3、其它情况按照10进制转换
       4、.123形式返回0.123(按照小于0的小数对待)
       
      Parameters:
      number - 数字,支持0x开头、0开头和普通十进制
      Returns:
      long
      Since:
      5.5.5
    • parseDouble

      public static double parseDouble(String number)
      解析转换数字字符串为long型数字,规则如下:
       1、0开头的忽略开头的0
       2、空串返回0
       3、其它情况按照10进制转换
       4、.123形式返回0.123(按照小于0的小数对待)
       
      Parameters:
      number - 数字,支持0x开头、0开头和普通十进制
      Returns:
      long
      Since:
      5.5.5
    • parseNumber

      public static Number parseNumber(String numberStr) throws NumberFormatException
      将指定字符串转换为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

      public static byte[] toUnsignedByteArray(BigInteger value)
      以无符号字节数组的形式返回传入值。
      Parameters:
      value - 需要转换的值
      Returns:
      无符号bytes
      Since:
      4.5.0
    • toUnsignedByteArray

      public static byte[] toUnsignedByteArray(int length, BigInteger value)
      以无符号字节数组的形式返回传入值。
      Parameters:
      length - bytes长度
      value - 需要转换的值
      Returns:
      无符号bytes
      Since:
      4.5.0
    • fromUnsignedByteArray

      public static BigInteger fromUnsignedByteArray(byte[] buf)
      无符号bytes转BigInteger
      Parameters:
      buf - buf 无符号bytes
      Returns:
      BigInteger
      Since:
      4.5.0
    • fromUnsignedByteArray

      public static BigInteger fromUnsignedByteArray(byte[] buf, int off, int length)
      无符号bytes转BigInteger
      Parameters:
      buf - 无符号bytes
      off - 起始位置
      length - 长度
      Returns:
      BigInteger
    • isValidNumber

      public static boolean isValidNumber(Number number)
      检查是否为有效的数字
      检查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

      public static double calculate(String expression)
      计算数学表达式的值,只支持加减乘除和取余
      如:
         calculate("(0*1--3)-5/-4-(3*(-2.13))") -》 10.64
       
      Parameters:
      expression - 数学表达式
      Returns:
      结果
      Since:
      5.7.6