类 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)

    另请参阅:
    参考, 参考
    • 构造器概要

      构造器 
      构造器 说明
      NumberUtil()  
    • 方法概要

      所有方法 静态方法 具体方法 
      修饰符和类型 方法 说明
      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
      static Collection<Integer> appendRange​(int start, int stop, int step, Collection<Integer> values)
      将给定范围内的整数添加到已有集合中
      static Collection<Integer> 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 @NotNull String decimalFormat​(String pattern, long value)
      格式化double
      DecimalFormat 做封装
      static @NotNull String decimalFormat​(String pattern, Object value)
      格式化double
      DecimalFormat 做封装
      static @NotNull 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​(char c1, char c2, boolean ignoreCase)
      比较两个字符是否相同
      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​(long num1, long num2)
      比较大小,值相等 返回true
      此方法修复传入long型数据由于没有本类型重载方法,导致数据精度丢失
      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 factorial​(@NotNull BigInteger n)
      计算阶乘
      static BigInteger factorial​(@NotNull BigInteger start, @NotNull BigInteger end)
      计算范围阶乘
      static String formatPercent​(double number, int scale)
      格式化百分比,小数采用四舍五入方式
      static @NotNull BigInteger fromUnsignedByteArray​(byte[] buf)
      无符号bytes转BigInteger
      static @NotNull BigInteger fromUnsignedByteArray​(byte[] buf, int off, int length)
      无符号bytes转BigInteger
      static @NotNull 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​(@NotNull BigDecimal bigNum1, @NotNull BigDecimal bigNum2)
      比较大小,参数1 > 参数2 返回true
      static boolean isGreaterOrEqual​(@NotNull BigDecimal bigNum1, @NotNull BigDecimal bigNum2)
      比较大小,参数1 >= 参数2 返回true
      static boolean isIn​(@NotNull BigDecimal value, @NotNull BigDecimal minInclude, @NotNull BigDecimal maxInclude)
      检查值是否在指定范围内
      static boolean isInteger​(String s)
      判断String是否是整数
      支持10进制
      static boolean isLess​(@NotNull BigDecimal bigNum1, @NotNull BigDecimal bigNum2)
      比较大小,参数1 < 参数2 返回true
      static boolean isLessOrEqual​(@NotNull BigDecimal bigNum1, @NotNull BigDecimal bigNum2)
      比较大小,参数1<=参数2 返回true
      static boolean isLong​(String s)
      判断字符串是否是Long类型
      支持10进制
      static boolean isNumber​(CharSequence str)
      是否为数字,支持包括:
      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将返回true
      static double min​(double @NotNull ... numberArray)
      取最小值
      static float min​(float @NotNull ... numberArray)
      取最小值
      static int min​(int @NotNull ... numberArray)
      取最小值
      static long min​(long @NotNull ... numberArray)
      取最小值
      static short min​(short @NotNull ... numberArray)
      取最小值
      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 @Nullable BigInteger newBigInteger​(String str)
      创建BigInteger,支持16进制、10进制和8进制,如果传入空白串返回null
      from Apache Common Lang
      static BigDecimal null2Zero​(BigDecimal decimal)
      空转0
      static double parseDouble​(String number)
      解析转换数字字符串为long型数字,规则如下:
      static float parseFloat​(String number)
      解析转换数字字符串为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 BigDecimal pow​(@NotNull BigDecimal number, int 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 @NotNull [] range​(int stop)
      从0开始给定范围内的整数列表,步进为1
      static int @NotNull [] range​(int start, int stop)
      给定范围内的整数列表,步进为1
      static int @NotNull [] range​(int start, int stop, int step)
      给定范围内的整数列表
      static @NotNull BigDecimal round​(double v, int scale)
      保留固定位数小数
      采用四舍五入策略 RoundingMode.HALF_UP
      例如保留2位小数:123.456789 =》 123.46
      static @NotNull BigDecimal round​(double v, int scale, RoundingMode roundingMode)
      保留固定位数小数
      例如保留四位小数:123.456789 =》 123.4567
      static @NotNull BigDecimal round​(@NotNull String numberStr, int scale, RoundingMode roundingMode)
      保留固定位数小数
      例如保留四位小数:123.456789 =》 123.4567
      static @NotNull BigDecimal round​(String numberStr, int scale)
      保留固定位数小数
      采用四舍五入策略 RoundingMode.HALF_UP
      例如保留2位小数:123.456789 =》 123.46
      static @NotNull BigDecimal round​(BigDecimal number, int scale)
      保留固定位数小数
      采用四舍五入策略 RoundingMode.HALF_UP
      例如保留2位小数:123.456789 =》 123.46
      static @NotNull BigDecimal round​(BigDecimal number, int scale, RoundingMode roundingMode)
      保留固定位数小数
      例如保留四位小数:123.456789 =》 123.4567
      static @NotNull BigDecimal roundDown​(Number number, int scale)
      保留固定小数位数,舍去多余位数
      static @NotNull BigDecimal roundDown​(BigDecimal value, int scale)
      保留固定小数位数,舍去多余位数
      static @NotNull BigDecimal roundHalfEven​(Number number, int scale)
      四舍六入五成双计算法
      static @NotNull 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 toBigDecimal​(Number number)
      数字转BigDecimal
      Float、Double等有精度问题,转换为字符串后再转换
      null转换为0
      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 @NotNull [] toBytes​(int value)
      int值转byte数组,使用大端字节序(高位字节在前,低位字节在后)
      static double toDouble​(Number value)
      Number值转换为double
      float强制转换存在精度问题,此方法避免精度丢失
      static int toInt​(byte @NotNull [] bytes)
      byte数组转int,使用大端字节序(高位字节在前,低位字节在后)
      static String toStr​(@NotNull Number number, boolean isStripTrailingZeros)
      数字转字符串
      调用Object.toString()BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
      static @NotNull String toStr​(@NotNull BigDecimal bigDecimal, boolean isStripTrailingZeros)
      BigDecimal数字转字符串
      调用BigDecimal.toPlainString(),可选去除尾小数点儿后多余的0
      static String toStr​(Number number)
      数字转字符串
      调用Object.toString()BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
      static String toStr​(Number number, String defaultValue)
      数字转字符串
      调用Object.toString(),并去除尾小数点儿后多余的0
      static @NotNull String toStr​(BigDecimal bigDecimal)
      BigDecimal数字转字符串
      调用BigDecimal.toPlainString(),并去除尾小数点儿后多余的0
      static byte @NotNull [] toUnsignedByteArray​(int length, @NotNull BigInteger value)
      以无符号字节数组的形式返回传入值。
      static byte @NotNull [] toUnsignedByteArray​(@NotNull BigInteger value)
      以无符号字节数组的形式返回传入值。
      static int zero2One​(int value)
      如果给定值为0,返回1,否则返回原值
    • 构造器详细资料

      • NumberUtil

        public NumberUtil()
    • 方法详细资料

      • add

        public static double add​(float v1,
                                 float v2)
        提供精确的加法运算
        参数:
        v1 - 被加数
        v2 - 加数
        返回:
      • add

        public static double add​(float v1,
                                 double v2)
        提供精确的加法运算
        参数:
        v1 - 被加数
        v2 - 加数
        返回:
      • add

        public static double add​(double v1,
                                 float v2)
        提供精确的加法运算
        参数:
        v1 - 被加数
        v2 - 加数
        返回:
      • add

        public static double add​(double v1,
                                 double v2)
        提供精确的加法运算
        参数:
        v1 - 被加数
        v2 - 加数
        返回:
      • add

        public static double add​(Double v1,
                                 Double v2)
        提供精确的加法运算
        参数:
        v1 - 被加数
        v2 - 加数
        返回:
      • add

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

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

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

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

        public static double sub​(float v1,
                                 float v2)
        提供精确的减法运算
        参数:
        v1 - 被减数
        v2 - 减数
        返回:
      • sub

        public static double sub​(float v1,
                                 double v2)
        提供精确的减法运算
        参数:
        v1 - 被减数
        v2 - 减数
        返回:
      • sub

        public static double sub​(double v1,
                                 float v2)
        提供精确的减法运算
        参数:
        v1 - 被减数
        v2 - 减数
        返回:
      • sub

        public static double sub​(double v1,
                                 double v2)
        提供精确的减法运算
        参数:
        v1 - 被减数
        v2 - 减数
        返回:
      • sub

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

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

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

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

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

        public static double mul​(float v1,
                                 float v2)
        提供精确的乘法运算
        参数:
        v1 - 被乘数
        v2 - 乘数
        返回:
      • mul

        public static double mul​(float v1,
                                 double v2)
        提供精确的乘法运算
        参数:
        v1 - 被乘数
        v2 - 乘数
        返回:
      • mul

        public static double mul​(double v1,
                                 float v2)
        提供精确的乘法运算
        参数:
        v1 - 被乘数
        v2 - 乘数
        返回:
      • mul

        public static double mul​(double v1,
                                 double v2)
        提供精确的乘法运算
        参数:
        v1 - 被乘数
        v2 - 乘数
        返回:
      • mul

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

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

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

        public static BigDecimal mul​(String v1,
                                     String v2)
        提供精确的乘法运算
        参数:
        v1 - 被乘数
        v2 - 乘数
        返回:
      • mul

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        public static int ceilDiv​(int v1,
                                  int v2)
        补充Math.ceilDiv() JDK8中添加了和Math.floorDiv()但却没有ceilDiv()
        参数:
        v1 - 被除数
        v2 - 除数
        返回:
        两个参数的商
      • round

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

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

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

        @Contract(pure=true)
        @NotNull
        public static @NotNull BigDecimal round​(BigDecimal number,
                                                int scale)
        保留固定位数小数
        采用四舍五入策略 RoundingMode.HALF_UP
        例如保留2位小数:123.456789 =》 123.46
        参数:
        number - 数字值
        scale - 保留小数位数
        返回:
        新值
      • roundStr

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

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

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

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

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

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

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

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

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

        @Contract(pure=true)
        @NotNull
        public static @NotNull BigDecimal roundHalfEven​(BigDecimal value,
                                                        int scale)
        四舍六入五成双计算法

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

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

        @NotNull
        public static @NotNull BigDecimal roundDown​(Number number,
                                                    int scale)
        保留固定小数位数,舍去多余位数
        参数:
        number - 需要科学计算的数据
        scale - 保留的小数位
        返回:
        结果
      • roundDown

        @Contract(pure=true)
        @NotNull
        public static @NotNull BigDecimal roundDown​(BigDecimal value,
                                                    int scale)
        保留固定小数位数,舍去多余位数
        参数:
        value - 需要科学计算的数据
        scale - 保留的小数位
        返回:
        结果
      • decimalFormat

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

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

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

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

        public static String decimalFormatMoney​(double value)
        格式化金额输出,每三位用逗号分隔
        参数:
        value - 金额
        返回:
        格式化后的值
      • formatPercent

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

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

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

        public static boolean isLong​(String s)
        判断字符串是否是Long类型
        支持10进制
        参数:
        s - String
        返回:
        是否为Long类型
      • isDouble

        public static boolean isDouble​(String s)
        判断字符串是否是浮点数
        参数:
        s - String
        返回:
        是否为Double类型
      • isPrimes

        public static boolean isPrimes​(int n)
        是否是质数(素数)
        质数表的质数又称素数。指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
        参数:
        n - 数字
        返回:
        是否是质数
      • range

        public static int @NotNull [] range​(int stop)
        从0开始给定范围内的整数列表,步进为1
        参数:
        stop - 结束(包含)
        返回:
        整数列表
      • range

        public static int @NotNull [] range​(int start,
                                            int stop)
        给定范围内的整数列表,步进为1
        参数:
        start - 开始(包含)
        stop - 结束(包含)
        返回:
        整数列表
      • range

        public static int @NotNull [] range​(int start,
                                            int stop,
                                            int step)
        给定范围内的整数列表
        参数:
        start - 开始(包含)
        stop - 结束(包含)
        step - 步进
        返回:
        整数列表
      • appendRange

        public static Collection<Integer> appendRange​(int start,
                                                      int stop,
                                                      Collection<Integer> values)
        将给定范围内的整数添加到已有集合中,步进为1
        参数:
        start - 开始(包含)
        stop - 结束(包含)
        values - 集合
        返回:
        集合
      • appendRange

        public static Collection<Integer> appendRange​(int start,
                                                      int stop,
                                                      int step,
                                                      Collection<Integer> values)
        将给定范围内的整数添加到已有集合中
        参数:
        start - 开始(包含)
        stop - 结束(包含)
        step - 步进
        values - 集合
        返回:
        集合
      • factorial

        public static BigInteger factorial​(@NotNull
                                           @NotNull BigInteger n)
        计算阶乘

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

        参数:
        n - 阶乘起始
        返回:
        结果
      • factorial

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

        factorial(start, end) = start * (start - 1) * ... * (end + 1)

        参数:
        start - 阶乘起始(包含)
        end - 阶乘结束,必须小于起始(不包括)
        返回:
        结果
      • factorial

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

        factorial(start, end) = start * (start - 1) * ... * (end + 1)

        参数:
        start - 阶乘起始(包含)
        end - 阶乘结束,必须小于起始(不包括)
        返回:
        结果
      • factorial

        public static long factorial​(long n)
        计算阶乘

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

        参数:
        n - 阶乘起始
        返回:
        结果
      • sqrt

        public static long sqrt​(long x)
        平方根算法
        推荐使用 Math.sqrt(double)
        参数:
        x - 值
        返回:
        平方根
      • processMultiple

        public static int processMultiple​(int selectNum,
                                          int minNum)
        可以用于计算双色球、大乐透注数的方法
        比如大乐透35选5可以这样调用processMultiple(7,5); 就是数学中的:C75=7*6/2*1
        参数:
        selectNum - 选中小球个数
        minNum - 最少要选中多少个小球
        返回:
        注数
      • divisor

        public static int divisor​(int m,
                                  int n)
        最大公约数
        参数:
        m - 第一个值
        n - 第二个值
        返回:
        最大公约数
      • multiple

        public static int multiple​(int m,
                                   int n)
        最小公倍数
        参数:
        m - 第一个值
        n - 第二个值
        返回:
        最小公倍数
      • getBinaryStr

        @NotNull
        public static @NotNull String getBinaryStr​(Number number)
        获得数字对应的二进制字符串
        参数:
        number - 数字
        返回:
        二进制字符串
      • binaryToInt

        public static int binaryToInt​(String binaryStr)
        二进制转int
        参数:
        binaryStr - 二进制字符串
        返回:
        int
      • binaryToLong

        public static long binaryToLong​(String binaryStr)
        二进制转long
        参数:
        binaryStr - 二进制字符串
        返回:
        long
      • compare

        public static int compare​(char x,
                                  char y)
        比较两个值的大小
        参数:
        x - 第一个值
        y - 第二个值
        返回:
        x==y返回0,x<y返回小于0的数,x>y返回大于0的数
        另请参阅:
        Character.compare(char, char)
      • compare

        public static int compare​(double x,
                                  double y)
        比较两个值的大小
        参数:
        x - 第一个值
        y - 第二个值
        返回:
        x==y返回0,x<y返回小于0的数,x>y返回大于0的数
        另请参阅:
        Double.compare(double, double)
      • compare

        public static int compare​(int x,
                                  int y)
        比较两个值的大小
        参数:
        x - 第一个值
        y - 第二个值
        返回:
        x==y返回0,x<y返回小于0的数,x>y返回大于0的数
        另请参阅:
        Integer.compare(int, int)
      • compare

        public static int compare​(long x,
                                  long y)
        比较两个值的大小
        参数:
        x - 第一个值
        y - 第二个值
        返回:
        x==y返回0,x<y返回小于0的数,x>y返回大于0的数
        另请参阅:
        Long.compare(long, long)
      • compare

        public static int compare​(short x,
                                  short y)
        比较两个值的大小
        参数:
        x - 第一个值
        y - 第二个值
        返回:
        x==y返回0,x<y返回小于0的数,x>y返回大于0的数
        另请参阅:
        Short.compare(short, short)
      • compare

        public static int compare​(byte x,
                                  byte y)
        比较两个值的大小
        参数:
        x - 第一个值
        y - 第二个值
        返回:
        x==y返回0,x<y返回-1,x>y返回1
        另请参阅:
        Byte.compare(byte, byte)
      • isGreater

        public static boolean isGreater​(@NotNull
                                        @NotNull BigDecimal bigNum1,
                                        @NotNull
                                        @NotNull BigDecimal bigNum2)
        比较大小,参数1 > 参数2 返回true
        参数:
        bigNum1 - 数字1
        bigNum2 - 数字2
        返回:
        是否大于
      • isGreaterOrEqual

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

        public static boolean isLess​(@NotNull
                                     @NotNull BigDecimal bigNum1,
                                     @NotNull
                                     @NotNull BigDecimal bigNum2)
        比较大小,参数1 < 参数2 返回true
        参数:
        bigNum1 - 数字1
        bigNum2 - 数字2
        返回:
        是否小于
      • isLessOrEqual

        public static boolean isLessOrEqual​(@NotNull
                                            @NotNull BigDecimal bigNum1,
                                            @NotNull
                                            @NotNull BigDecimal bigNum2)
        比较大小,参数1<=参数2 返回true
        参数:
        bigNum1 - 数字1
        bigNum2 - 数字2
        返回:
        是否小于等于
      • isIn

        public static boolean isIn​(@NotNull
                                   @NotNull BigDecimal value,
                                   @NotNull
                                   @NotNull BigDecimal minInclude,
                                   @NotNull
                                   @NotNull BigDecimal maxInclude)
        检查值是否在指定范围内
        参数:
        value - 值
        minInclude - 最小值(包含)
        maxInclude - 最大值(包含)
        返回:
        经过检查后的值
      • equals

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

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

        public static boolean equals​(long num1,
                                     long num2)
        比较大小,值相等 返回true
        此方法修复传入long型数据由于没有本类型重载方法,导致数据精度丢失
        参数:
        num1 - 数字1
        num2 - 数字2
        返回:
        是否相等
      • equals

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

        public static boolean equals​(char c1,
                                     char c2,
                                     boolean ignoreCase)
        比较两个字符是否相同
        参数:
        c1 - 字符1
        c2 - 字符2
        ignoreCase - 是否忽略大小写
        返回:
        是否相同
        另请参阅:
        CharUtil.equals(char, char, boolean)
      • min

        @Contract(pure=true)
        public static long min​(long @NotNull ... numberArray)
        取最小值
        参数:
        numberArray - 数字数组
        返回:
        最小值
      • min

        @Contract(pure=true)
        public static int min​(int @NotNull ... numberArray)
        取最小值
        参数:
        numberArray - 数字数组
        返回:
        最小值
      • min

        @Contract(pure=true)
        public static short min​(short @NotNull ... numberArray)
        取最小值
        参数:
        numberArray - 数字数组
        返回:
        最小值
      • min

        @Contract(pure=true)
        public static double min​(double @NotNull ... numberArray)
        取最小值
        参数:
        numberArray - 数字数组
        返回:
        最小值
      • min

        @Contract(pure=true)
        public static float min​(float @NotNull ... numberArray)
        取最小值
        参数:
        numberArray - 数字数组
        返回:
        最小值
      • toStr

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

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

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

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

        public static BigDecimal toBigDecimal​(String numberStr)
        数字转BigDecimal
        null或""或空白符转换为0
        参数:
        numberStr - 数字字符串
        返回:
        BigDecimal
      • count

        public static int count​(int total,
                                int part)
        计算等份个数
        参数:
        total - 总数
        part - 每份的个数
        返回:
        分成了几份
      • zero2One

        public static int zero2One​(int value)
        如果给定值为0,返回1,否则返回原值
        参数:
        value - 值
        返回:
        1或非0值
      • newBigInteger

        @Nullable
        public static @Nullable BigInteger newBigInteger​(String str)
        创建BigInteger,支持16进制、10进制和8进制,如果传入空白串返回null
        from Apache Common Lang
        参数:
        str - 数字字符串
        返回:
        BigInteger
      • isBeside

        public static boolean isBeside​(long number1,
                                       long number2)
        判断两个数字是否相邻,例如1和2相邻,1和3不相邻
        判断方法为做差取绝对值判断是否为1
        参数:
        number1 - 数字1
        number2 - 数字2
        返回:
        是否相邻
      • isBeside

        public static boolean isBeside​(int number1,
                                       int number2)
        判断两个数字是否相邻,例如1和2相邻,1和3不相邻
        判断方法为做差取绝对值判断是否为1
        参数:
        number1 - 数字1
        number2 - 数字2
        返回:
        是否相邻
      • partValue

        public static int partValue​(int total,
                                    int partCount)
        把给定的总数平均分成N份,返回每份的个数
        当除以分数有余数时每份+1
        参数:
        total - 总数
        partCount - 份数
        返回:
        每份的个数
      • partValue

        public static int partValue​(int total,
                                    int partCount,
                                    boolean isPlusOneWhenHasRem)
        把给定的总数平均分成N份,返回每份的个数
        如果isPlusOneWhenHasRem为true,则当除以分数有余数时每份+1,否则丢弃余数部分
        参数:
        total - 总数
        partCount - 份数
        isPlusOneWhenHasRem - 在有余数时是否每份+1
        返回:
        每份的个数
      • pow

        public static BigDecimal pow​(Number number,
                                     int n)
        提供精确的幂运算
        参数:
        number - 底数
        n - 指数
        返回:
        幂的积
      • pow

        public static BigDecimal pow​(@NotNull
                                     @NotNull BigDecimal number,
                                     int n)
        提供精确的幂运算
        参数:
        number - 底数
        n - 指数
        返回:
        幂的积
      • isPowerOfTwo

        public static boolean isPowerOfTwo​(long n)
        判断一个整数是否是2的幂
        参数:
        n - 待验证的整数
        返回:
        如果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截取小数点之前的数字,忽略小数部分
         
        参数:
        number - 数字,支持0x开头、0开头和普通十进制
        返回:
        int
        抛出:
        NumberFormatException - 数字格式异常
      • 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截取小数点之前的数字,忽略小数部分
         
        参数:
        number - 数字,支持0x开头、0开头和普通十进制
        返回:
        long
      • parseFloat

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

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

        @Contract(pure=true)
        public static byte @NotNull [] toBytes​(int value)
        int值转byte数组,使用大端字节序(高位字节在前,低位字节在后)
        参数:
        value - 值
        返回:
        byte数组
        另请参阅:
        http://www.ruanyifeng.com/blog/2016/11/byte-order.html
      • toInt

        @Contract(pure=true)
        public static int toInt​(byte @NotNull [] bytes)
        byte数组转int,使用大端字节序(高位字节在前,低位字节在后)
        参数:
        bytes - byte数组
        返回:
        int
        另请参阅:
        http://www.ruanyifeng.com/blog/2016/11/byte-order.html
      • toUnsignedByteArray

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

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

        @Contract(value="_ -> new",
                  pure=true)
        @NotNull
        public static @NotNull BigInteger fromUnsignedByteArray​(byte[] buf)
        无符号bytes转BigInteger
        参数:
        buf - buf 无符号bytes
        返回:
        BigInteger
      • fromUnsignedByteArray

        @Contract("_, _, _ -> new")
        @NotNull
        public static @NotNull BigInteger fromUnsignedByteArray​(byte[] buf,
                                                                int off,
                                                                int length)
        无符号bytes转BigInteger
        参数:
        buf - 无符号bytes
        off - 起始位置
        length - 长度
        返回:
        BigInteger
      • isValidNumber

        public static boolean isValidNumber​(Number number)
        检查是否为有效的数字
        检查Double和Float是否为无限大,或者Not a Number
        非数字类型和Null将返回true
        参数:
        number - 被检查类型
        返回:
        检查结果,非数字类型和Null将返回true
      • isValid

        public static boolean isValid​(double number)
        检查是否为有效的数字
        检查double否为无限大,或者Not a Number(NaN)
        参数:
        number - 被检查double
        返回:
        检查结果
      • isValid

        public static boolean isValid​(float number)
        检查是否为有效的数字
        检查double否为无限大,或者Not a Number(NaN)
        参数:
        number - 被检查double
        返回:
        检查结果
      • calculate

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

        public static double toDouble​(Number value)
        Number值转换为double
        float强制转换存在精度问题,此方法避免精度丢失
        参数:
        value - 被转换的float值
        返回:
        double值
      • isOdd

        public static boolean isOdd​(int num)
        检查是否为奇数
        参数:
        num - 被判断的数值
        返回:
        是否是奇数
      • isEven

        public static boolean isEven​(int num)
        检查是否为偶数
        参数:
        num - 被判断的数值
        返回:
        是否是偶数