Package org.miaixz.bus.core.math
Class NumberParser
java.lang.Object
org.miaixz.bus.core.math.NumberParser
数字解析器
用于将字符串解析为对应的数字类型,支持包括:
- 0开头的忽略开头的0
- 空串返回0
- NaN返回0
- 其它情况按照10进制转换
- .123形式返回0.123(按照小于0的小数对待)
构造时可选是否将NaN转为0,默认为true。 参考:https://stackoverflow.com/questions/5876369/why-does-casting-double-nan-to-int-not-throw-an-exception-in-java
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic NumberParser构建NumberParserstatic NumberParser构建NumberParserparseBigInteger(String text) 解析为BigInteger,支持16进制、10进制和8进制,如果传入空白串返回nulldoubleparseDouble(String numberStr) 解析转换数字字符串为long型数字,规则如下:floatparseFloat(String numberStr) 解析转换数字字符串为long型数字,规则如下:int解析转换数字字符串为int型数字,规则如下:long解析转换数字字符串为long型数字,规则如下:parseNumber(String numberStr) 将指定字符串转换为Number对象 此方法不支持科学计数法 空白符和NaN转换为0 0x开头使用16进制解析为Long类型
-
Field Details
-
INSTANCE
单例
-
-
Constructor Details
-
NumberParser
构造- Parameters:
locale- 地域,null表示默认本地zeroIfNaN- 如果用户传入NaN,是否转为0,如果为false,则抛出NumberFormatException
-
-
Method Details
-
of
构建NumberParser- Parameters:
locale- 地域,null表示默认本地- Returns:
- NumberParser
-
of
构建NumberParser- Parameters:
locale- 地域,null表示默认本地zeroIfNaN- 如果用户传入NaN,是否转为0,如果为false,则抛出NumberFormatException- Returns:
- NumberParser
-
parseInt
解析转换数字字符串为int型数字,规则如下:1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、其它情况按照10进制转换 4、空串返回0 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分 7、科学计数法抛出NumberFormatException异常
- Parameters:
numberStr- 数字字符串- Returns:
- the int
- Throws:
NumberFormatException- 数字格式异常
-
parseLong
解析转换数字字符串为long型数字,规则如下:1、0x开头的视为16进制数字 2、0开头的忽略开头的0 3、空串返回0 4、其它情况按照10进制转换 5、.123形式返回0(按照小于0的小数对待) 6、123.56截取小数点之前的数字,忽略小数部分
- Parameters:
numberStr- 数字字符串- Returns:
- the long
-
parseFloat
解析转换数字字符串为long型数字,规则如下:1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待)
- Parameters:
numberStr- 数字字符串- Returns:
- the long
-
parseDouble
解析转换数字字符串为long型数字,规则如下:1、0开头的忽略开头的0 2、空串返回0 3、其它情况按照10进制转换 4、.123形式返回0.123(按照小于0的小数对待) 5、NaN返回0
- Parameters:
numberStr- 数字字符串- Returns:
- the double
-
parseBigInteger
解析为BigInteger,支持16进制、10进制和8进制,如果传入空白串返回null- Parameters:
text- 数字字符串- Returns:
BigInteger
-
parseNumber
将指定字符串转换为Number对象 此方法不支持科学计数法- 空白符和NaN转换为0
- 0x开头使用16进制解析为Long类型
需要注意的是,在不同Locale下,数字的表示形式也是不同的,例如: 德国、荷兰、比利时、丹麦、意大利、罗马尼亚和欧洲大多地区使用`,`区分小数 也就是说,在这些国家地区,1.20表示120,而非1.2。
- Parameters:
numberStr- 数字字符串- Returns:
- Number对象
- Throws:
NumberFormatException- 包装了ParseException,当给定的数字字符串无法解析时抛出
-