public class NumberUtil extends NumberValidator
BigDecimalnew BigDecimal(0.1)和 BigDecimal.valueOf(0.1)
表示的不是0.1而是0.1000000000000000055511151231257827021181583404541015625
这是因为0.1无法准确的表示为double。因此应该使用new BigDecimal(String)。
相关介绍:| Constructor and Description |
|---|
NumberUtil() |
| Modifier and Type | Method and Description |
|---|---|
static BigDecimal |
add(Number... values)
提供精确的加法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
add(String... values)
提供精确的加法运算
如果传入多个值为null或者空,则返回 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如: 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数 也就是说,在这些国家地区,1.20表示120,而非1.2。 |
static Collection<Integer> |
appendRange(int start,
int stop,
Collection<Integer> values)
将给定范围内的整数添加到已有集合中,步进为1
|
static Collection<Integer> |
appendRange(int startInclude,
int stopInclude,
int step,
Collection<Integer> values)
将给定范围内的整数添加到已有集合中
|
static int |
binaryToInt(String binaryStr)
二进制转int
|
static long |
binaryToLong(String binaryStr)
二进制转long
|
static double |
calculate(String expression)
计算数学表达式的值,只支持加减乘除和取余
如:
calculate("(0*1--3)-5/-4-(3*(-2.13))") -》 10.64
|
static int |
ceilDiv(int v1,
int v2)
补充Math.ceilDiv() JDK8中添加了和
Math.floorDiv(int, int) 但却没有ceilDiv() |
static int |
count(int total,
int pageSize)
计算等份个数
(每份2)12 34 57
(每份3)123 456 7
(每份4)1234 567
|
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 boolean |
equals(Number number1,
Number number2)
比较数字值是否相等,相等返回
true需要注意的是 BigDecimal需要特殊处理BigDecimal使用compareTo方式判断,因为使用equals方法也判断小数位数,如2.0和2.00就不相等, 此方法判断值相等时忽略精度的,即0.00 == 0 如果用户提供两个Number都是 BigDecimal,则通过调用BigDecimal.compareTo(BigDecimal)方法来判断是否相等
其他情况调用Object.equals(Object)比较
|
static String |
format(String pattern,
double value)
|
static String |
format(String pattern,
long value)
|
static String |
format(String pattern,
Object value)
|
static String |
format(String pattern,
Object value,
RoundingMode roundingMode)
|
static String |
formatMoney(double value)
格式化金额输出,每三位用逗号分隔
|
static String |
formatPercent(double number,
int scale)
格式化百分比,小数采用四舍五入方式
|
static String |
formatThousands(double number,
int scale)
格式化千分位表示方式,小数采用四舍五入方式
|
static String |
getBinaryStr(Number number)
获得数字对应的二进制字符串
|
static String |
intToRoman(int num)
整数转罗马数字
限制:[1,3999]的正整数 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 |
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 |
isEven(int num)
检查是否为偶数
|
static boolean |
isOdd(int num)
检查是否为奇数
|
static boolean |
isPowerOfTwo(long n)
判断一个整数是否是2的幂
|
static boolean |
isValid(double number)
检查是否为有效的数字
检查double否为无限大,或者Not a Number(NaN) |
static boolean |
isValid(float number)
检查是否为有效的数字
检查double否为无限大,或者Not a Number(NaN) |
static boolean |
isValidNumber(Number number)
检查是否为有效的数字
检查Double和Float是否为无限大,或者Not a Number 非数字类型和 null将返回false |
static boolean |
isZero(Number n)
判断给定数字是否为0
如果是
Byte、Short、Integer、Long,直接转为long和0L比较
如果是BigInteger,使用BigInteger.equals(Object)
如果是Float,转为float与0f比较
如果是Double,转为double与0d比较
其它情况转为BigDecimal与BigDecimal.ZERO比较大小(使用compare)
|
static BigDecimal |
mul(Number... values)
提供精确的乘法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
mul(String... values)
提供精确的乘法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
nullToZero(BigDecimal decimal)
如果给定值为
null,返回0,否则返回原值 |
static BigInteger |
nullToZero(BigInteger number)
如果给定值为
null,返回0,否则返回原值 |
static byte |
nullToZero(Byte number)
如果给定值为
null,返回0,否则返回原值 |
static double |
nullToZero(Double number)
如果给定值为
null,返回0,否则返回原值 |
static float |
nullToZero(Float number)
如果给定值为
null,返回0,否则返回原值 |
static int |
nullToZero(Integer number)
如果给定值为
null,返回0,否则返回原值 |
static long |
nullToZero(Long number)
如果给定值为0,返回1,否则返回原值
|
static short |
nullToZero(Short number)
如果给定值为
null,返回0,否则返回原值 |
static BigInteger |
parseBigInteger(String numberStr)
创建
BigInteger,支持16进制、10进制和8进制,如果传入空白串返回nullfrom Apache Common Lang |
static double |
parseDouble(String numberStr)
解析转换数字字符串为long型数字,规则如下:
1、0开头的忽略开头的0
2、空串返回0
3、其它情况按照10进制转换
4、.123形式返回0.123(按照小于0的小数对待)
5、NaN返回0
|
static Double |
parseDouble(String numberStr,
Double defaultValue)
解析转换数字字符串为
Double 规则如下:
1、0开头的忽略开头的0
2、空串返回0
3、其它情况按照10进制转换
4、.123形式返回0.123(按照小于0的小数对待)
|
static float |
parseFloat(String numberStr)
解析转换数字字符串为long型数字,规则如下:
1、0开头的忽略开头的0
2、空串返回0
3、其它情况按照10进制转换
4、.123形式返回0.123(按照小于0的小数对待)
|
static Float |
parseFloat(String numberStr,
Float defaultValue)
解析转换数字字符串为
Float 规则如下:
1、0开头的忽略开头的0
2、空串返回0
3、其它情况按照10进制转换
4、.123形式返回0.123(按照小于0的小数对待)
|
static int |
parseInt(char[] chars,
int radix)
转换char数组为一个int值,此方法拷贝自
Integer.parseInt(String, int)拷贝的原因是直接转换char[]避免创建String对象造成的多余拷贝。 |
static int |
parseInt(String numberStr)
解析转换数字字符串为int型数字,规则如下:
1、0x开头的视为16进制数字
2、0开头的忽略开头的0
3、其它情况按照10进制转换
4、空串返回0
5、.123形式返回0(按照小于0的小数对待)
6、123.56截取小数点之前的数字,忽略小数部分
7、科学计数法抛出NumberFormatException异常
|
static Integer |
parseInt(String numberStr,
Integer defaultValue)
解析转换数字字符串为
Integer 规则如下:
1、0x开头的视为16进制数字
2、0开头的忽略开头的0
3、其它情况按照10进制转换
4、空串返回0
5、.123形式返回0(按照小于0的小数对待)
6、123.56截取小数点之前的数字,忽略小数部分
7、解析失败返回默认值
|
static long |
parseLong(String numberStr)
解析转换数字字符串为long型数字,规则如下:
1、0x开头的视为16进制数字
2、0开头的忽略开头的0
3、空串返回0
4、其它情况按照10进制转换
5、.123形式返回0(按照小于0的小数对待)
6、123.56截取小数点之前的数字,忽略小数部分
|
static Long |
parseLong(String numberStr,
Long defaultValue)
解析转换数字字符串为
Long 规则如下:
1、0x开头的视为16进制数字
2、0开头的忽略开头的0
3、其它情况按照10进制转换
4、空串返回0
5、.123形式返回0(按照小于0的小数对待)
6、123.56截取小数点之前的数字,忽略小数部分
7、解析失败返回默认值
|
static Number |
parseNumber(String numberStr)
将指定字符串转换为
Number 对象此方法不支持科学计数法 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如: 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数 也就是说,在这些国家地区,1.20表示120,而非1.2。 |
static Number |
parseNumber(String numberStr,
Locale locale)
将指定字符串转换为
Number 对象此方法不支持科学计数法 需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如: 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数 也就是说,在这些国家地区,1.20表示120,而非1.2。 |
static Number |
parseNumber(String numberStr,
Number defaultValue)
将指定字符串转换为
Number
此方法不支持科学计数法 |
static int |
partValue(int total,
int partCount)
把给定的总数平均分成N份,返回每份的个数
当除以分数有余数时每份+1 |
static int |
partValue(int total,
int partCount,
boolean isPlusOneWhenHasRem)
把给定的总数平均分成N份,返回每份的个数
如果isPlusOneWhenHasRem为true,则当除以分数有余数时每份+1,否则丢弃余数部分 |
static BigDecimal |
pow(BigDecimal number,
int n)
提供精确的幂运算
如果n为负数,则返回1/a的-n次方,默认四舍五入 |
static BigDecimal |
pow(BigDecimal number,
int n,
int scale,
RoundingMode roundingMode)
提供精确的幂运算
如果n为负数,则返回1/a的-n次方,默认四舍五入 |
static BigDecimal |
pow(Number number,
int n)
提供精确的幂运算
|
static int[] |
range(int stopIncluded)
生成一个从0开始的数字列表
|
static int[] |
range(int startInclude,
int stopIncluded)
生成一个数字列表
自动判定正序反序 |
static int[] |
range(int startInclude,
int stopIncluded,
int step)
生成一个数字列表
自动判定正序反序 |
static int |
romanToInt(String roman)
罗马数字转整数
|
static BigDecimal |
round(Number number,
int scale)
|
static BigDecimal |
round(Number number,
int scale,
RoundingMode roundingMode)
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567 |
static BigDecimal |
roundDown(Number number,
int scale)
保留固定小数位数,舍去多余位数
|
static BigDecimal |
roundHalfEven(Number number,
int scale)
四舍六入五成双计算法
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
|
static String |
roundStr(Number number,
int scale)
|
static String |
roundStr(Number number,
int scale,
RoundingMode roundingMode)
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567 |
static String |
roundStr(String numberStr,
int scale)
|
static String |
roundStr(String numberStr,
int scale,
RoundingMode roundingMode)
保留固定位数小数
例如保留四位小数:123.456789 =》 123.4567 |
static BigDecimal |
sub(Number... values)
提供精确的减法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
sub(String... values)
提供精确的减法运算
如果传入多个值为null或者空,则返回0 |
static BigDecimal |
toBigDecimal(Number number)
|
static BigDecimal |
toBigDecimal(String numberStr)
|
static BigInteger |
toBigInteger(Number number)
数字转
BigIntegernull或"NaN"转换为0 |
static BigInteger |
toBigInteger(String numberStr)
数字转
BigIntegernull或""或空白符转换为0 |
static double |
toDouble(Number value)
Number值转换为double
float强制转换存在精度问题,此方法避免精度丢失 |
static String |
toStr(BigDecimal bigDecimal)
|
static String |
toStr(BigDecimal bigDecimal,
boolean isStripTrailingZeros)
|
static String |
toStr(Number number)
|
static String |
toStr(Number number,
boolean isStripTrailingZeros)
|
static String |
toStr(Number number,
String defaultValue)
数字转字符串
调用 Object.toString(),并去除尾小数点儿后多余的0 |
static int |
zeroToOne(int value)
如果给定值为0,返回1,否则返回原值
|
public static BigDecimal add(Number... values)
values - 多个被加值public static BigDecimal add(String... values)
需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
也就是说,在这些国家地区,1.20表示120,而非1.2。
values - 多个被加值public static BigDecimal sub(Number... values)
values - 多个被减值public static BigDecimal sub(String... values)
values - 多个被减值public static BigDecimal mul(Number... values)
values - 多个被乘值public static BigDecimal mul(String... values)
values - 多个被乘值public static BigDecimal div(Number v1, Number v2)
v1 - 被除数v2 - 除数public static BigDecimal div(String v1, String v2)
v1 - 被除数v2 - 除数public static BigDecimal div(Number v1, Number v2, int scale)
v1 - 被除数v2 - 除数scale - 精确度,如果为负值,取绝对值public static BigDecimal div(String v1, String v2, int scale)
v1 - 被除数v2 - 除数scale - 精确度,如果为负值,取绝对值public static BigDecimal div(String v1, String v2, int scale, RoundingMode roundingMode)
v1 - 被除数v2 - 除数scale - 精确度,如果为负值,取绝对值roundingMode - 保留小数的模式 RoundingModepublic static BigDecimal div(Number v1, Number v2, int scale, RoundingMode roundingMode)
v1 - 被除数v2 - 除数scale - 精确度,如果为负值,取绝对值roundingMode - 保留小数的模式 RoundingModepublic static int ceilDiv(int v1,
int v2)
Math.floorDiv(int, int) 但却没有ceilDiv()v1 - 被除数v2 - 除数public static BigDecimal roundHalfEven(Number number, int scale)
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
算法规则: 四舍六入五考虑, 五后非零就进一, 五后皆零看奇偶, 五前为偶应舍去, 五前为奇要进一。
number - 需要科学计算的数据scale - 保留的小数位public static BigDecimal roundDown(Number number, int scale)
number - 需要科学计算的数据scale - 保留的小数位public static BigDecimal round(Number number, int scale)
number - 数字值scale - 保留小数位数public static String roundStr(String numberStr, int scale)
numberStr - 数字值的字符串表现形式scale - 保留小数位数public static String roundStr(Number number, int scale)
number - 数字值scale - 保留小数位数public static String roundStr(String numberStr, int scale, RoundingMode roundingMode)
numberStr - 数字值的字符串表现形式scale - 保留小数位数roundingMode - 保留小数的模式 RoundingModepublic static String roundStr(Number number, int scale, RoundingMode roundingMode)
number - 数字值scale - 保留小数位数roundingMode - 保留小数的模式 RoundingModepublic static BigDecimal round(Number number, int scale, RoundingMode roundingMode)
number - 数字值scale - 保留小数位数,如果传入小于0,则默认0roundingMode - 保留小数的模式 RoundingMode,如果传入null则默认四舍五入public static String format(String pattern, double value)
pattern - 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。value - 值public static String format(String pattern, long value)
pattern - 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。value - 值public static String format(String pattern, Object value)
pattern - 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。value - 值,支持BigDecimal、BigInteger、Number等类型public static String format(String pattern, Object value, RoundingMode roundingMode)
pattern - 格式 格式中主要以 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。value - 值,支持BigDecimal、BigInteger、Number等类型roundingMode - 保留小数的方式枚举public static String formatMoney(double value)
value - 金额public static String formatPercent(double number, int scale)
number - 值scale - 保留小数位数public static String formatThousands(double number, int scale)
number - 值scale - 保留小数位数public static int[] range(int stopIncluded)
stopIncluded - 结束的数字(不包含)public static int[] range(int startInclude,
int stopIncluded)
startInclude - 开始的数字(包含)stopIncluded - 结束的数字(包含)public static int[] range(int startInclude,
int stopIncluded,
int step)
startInclude - 开始的数字(包含)stopIncluded - 结束的数字(不包含)step - 步进public static Collection<Integer> appendRange(int start, int stop, Collection<Integer> values)
start - 开始(包含)stop - 结束(包含)values - 集合public static Collection<Integer> appendRange(int startInclude, int stopInclude, int step, Collection<Integer> values)
startInclude - 开始(包含)stopInclude - 结束(包含)step - 步进values - 集合public static String getBinaryStr(Number number)
number - 数字public static int binaryToInt(String binaryStr)
binaryStr - 二进制字符串public static long binaryToLong(String binaryStr)
binaryStr - 二进制字符串public static boolean equals(Number number1, Number number2)
trueBigDecimal需要特殊处理BigDecimal,则通过调用BigDecimal.compareTo(BigDecimal)方法来判断是否相等Object.equals(Object)比较number1 - 数字1number2 - 数字2CompareUtil.equals(Comparable, Comparable),
Objects.equals(Object, Object)public static String toStr(Number number, String defaultValue)
Object.toString(),并去除尾小数点儿后多余的0number - A NumberdefaultValue - 如果number参数为null,返回此默认值public static String toStr(Number number, boolean isStripTrailingZeros)
number - A NumberisStripTrailingZeros - 是否去除末尾多余0,例如5.0返回5public static String toStr(BigDecimal bigDecimal)
bigDecimal - A BigDecimalpublic static String toStr(BigDecimal bigDecimal, boolean isStripTrailingZeros)
bigDecimal - A BigDecimalisStripTrailingZeros - 是否去除末尾多余0,例如5.0返回5public static BigDecimal toBigDecimal(Number number)
number - 数字BigDecimalpublic static BigDecimal toBigDecimal(String numberStr) throws IllegalArgumentException
numberStr - 数字字符串BigDecimalIllegalArgumentException - null或""或"NaN"或空白符抛出此异常public static BigInteger toBigInteger(Number number)
BigIntegernumber - 数字BigIntegerpublic static BigInteger toBigInteger(String numberStr)
BigIntegernumberStr - 数字字符串BigIntegerpublic static int count(int total,
int pageSize)
(每份2)12 34 57
(每份3)123 456 7
(每份4)1234 567
total - 总数pageSize - 每份的个数public static int zeroToOne(int value)
value - 值public static int nullToZero(Integer number)
null,返回0,否则返回原值number - 值public static long nullToZero(Long number)
number - 值public static double nullToZero(Double number)
null,返回0,否则返回原值number - 值public static float nullToZero(Float number)
null,返回0,否则返回原值number - 值public static short nullToZero(Short number)
null,返回0,否则返回原值number - 值public static byte nullToZero(Byte number)
null,返回0,否则返回原值number - 值public static BigInteger nullToZero(BigInteger number)
null,返回0,否则返回原值number - 值public static BigDecimal nullToZero(BigDecimal decimal)
null,返回0,否则返回原值decimal - BigDecimal,可以为nullBigDecimal参数为空时返回0的值public static BigInteger parseBigInteger(String numberStr)
BigInteger,支持16进制、10进制和8进制,如果传入空白串返回nullnumberStr - 数字字符串BigIntegerpublic static boolean isBeside(long number1,
long number2)
number1 - 数字1number2 - 数字2public static boolean isBeside(int number1,
int number2)
number1 - 数字1number2 - 数字2public static int partValue(int total,
int partCount)
total - 总数partCount - 份数public static int partValue(int total,
int partCount,
boolean isPlusOneWhenHasRem)
total - 总数partCount - 份数isPlusOneWhenHasRem - 在有余数时是否每份+1public static BigDecimal pow(Number number, int n)
number - 底数n - 指数public static BigDecimal pow(BigDecimal number, int n)
number - 底数n - 指数,如果为负数,则返回1/a的-n次方public static BigDecimal pow(BigDecimal number, int n, int scale, RoundingMode roundingMode)
number - 底数scale - 保留小数位数roundingMode - 舍入模式n - 指数,如果为负数,则返回1/a的-n次方public static boolean isPowerOfTwo(long n)
n - 待验证的整数public static Integer parseInt(String numberStr, Integer defaultValue)
Integer 规则如下:
1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、其它情况按照10进制转换 4、空串返回0 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分 7、解析失败返回默认值
numberStr - 数字字符串,支持0x开头、0开头和普通十进制defaultValue - 如果解析失败, 将返回defaultValue, 允许nullpublic static int parseInt(String numberStr) throws NumberFormatException
1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、其它情况按照10进制转换 4、空串返回0 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分 7、科学计数法抛出NumberFormatException异常
numberStr - 数字,支持0x开头、0开头和普通十进制NumberFormatException - 数字格式异常public static int parseInt(char[] chars,
int radix)
throws NumberFormatException
Integer.parseInt(String, int)chars - char数组radix - 进制数NumberFormatException - 数字格式异常Integer.parseInt(String, int)public static Long parseLong(String numberStr, Long defaultValue)
Long 规则如下:
1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、其它情况按照10进制转换 4、空串返回0 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分 7、解析失败返回默认值
numberStr - 数字字符串,支持0x开头、0开头和普通十进制defaultValue - 如果解析失败, 将返回defaultValue, 允许nullpublic static long parseLong(String numberStr)
1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、空串返回0 4、其它情况按照10进制转换 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分
numberStr - 数字,支持0x开头、0开头和普通十进制public static Float parseFloat(String numberStr, Float defaultValue)
Float 规则如下:
1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
numberStr - 数字字符串,支持0x开头、0开头和普通十进制defaultValue - 如果解析失败, 将返回defaultValue, 允许nullpublic static float parseFloat(String numberStr)
1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
numberStr - 数字,支持0x开头、0开头和普通十进制public static Double parseDouble(String numberStr, Double defaultValue)
Double 规则如下:
1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
numberStr - 数字字符串,支持0x开头、0开头和普通十进制defaultValue - 如果解析失败, 将返回defaultValue, 允许nullpublic static double parseDouble(String numberStr)
1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待) 5、NaN返回0
numberStr - 数字,支持0x开头、0开头和普通十进制public static Number parseNumber(String numberStr, Number defaultValue)
Number
此方法不支持科学计数法numberStr - Number字符串defaultValue - 如果解析失败, 将返回defaultValue, 允许nullpublic static Number parseNumber(String numberStr) throws NumberFormatException
Number 对象
需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
也就是说,在这些国家地区,1.20表示120,而非1.2。
numberStr - Number字符串NumberFormatException - 包装了ParseException,当给定的数字字符串无法解析时抛出public static Number parseNumber(String numberStr, Locale locale) throws NumberFormatException
Number 对象
需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如:
德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数
也就是说,在这些国家地区,1.20表示120,而非1.2。
numberStr - Number字符串locale - 地区,不同地区数字表示方式不同NumberFormatException - 包装了ParseException,当给定的数字字符串无法解析时抛出public static boolean isValidNumber(Number number)
null将返回falsenumber - 被检查类型public static boolean isValid(double number)
number - 被检查doublepublic static boolean isValid(float number)
number - 被检查doublepublic static double calculate(String expression)
calculate("(0*1--3)-5/-4-(3*(-2.13))") -》 10.64
expression - 数学表达式public static double toDouble(Number value)
value - 被转换的float值public static boolean isOdd(int num)
num - 被判断的数值public static boolean isEven(int num)
num - 被判断的数值public static boolean isZero(Number n)
Byte、Short、Integer、Long,直接转为long和0L比较BigInteger,使用BigInteger.equals(Object)Float,转为float与0f比较Double,转为double与0d比较BigDecimal与BigDecimal.ZERO比较大小(使用compare)n - 数字public static String intToRoman(int num)
num - [1,3999]的正整数public static int romanToInt(String roman)
roman - 罗马字符IllegalArgumentException - 如果传入非罗马字符串,抛出异常Copyright © 2025. All rights reserved.