public class NumberUtils
extends Object
Provides extra functionality for Java Number classes.
Since:
static
BigDecimal
toScaledBigDecimal
(
BigDecimal
value)
Convert a
BigDecimal
to a
BigDecimal
with a scale of
two that has been rounded using
RoundingMode.HALF_EVEN
.
static
BigDecimal
toScaledBigDecimal
(
BigDecimal
value,
int scale,
RoundingMode
roundingMode)
static
BigDecimal
toScaledBigDecimal
(
Double
value)
Convert a
Double
to a
BigDecimal
with a scale of
two that has been rounded using
RoundingMode.HALF_EVEN
.
static
BigDecimal
toScaledBigDecimal
(
Double
value,
int scale,
RoundingMode
roundingMode)
static
BigDecimal
toScaledBigDecimal
(
Float
value)
Convert a
Float
to a
BigDecimal
with a scale of
two that has been rounded using
RoundingMode.HALF_EVEN
.
static
BigDecimal
toScaledBigDecimal
(
Float
value,
int scale,
RoundingMode
roundingMode)
static
BigDecimal
toScaledBigDecimal
(
String
value)
Convert a
String
to a
BigDecimal
with a scale of
two that has been rounded using
RoundingMode.HALF_EVEN
.
static
BigDecimal
toScaledBigDecimal
(
String
value,
int scale,
RoundingMode
roundingMode)
static short
toShort
(
String
str)
Convert a
String
to a
short
, returning
zero
if the conversion fails.
static short
toShort
(
String
str,
short defaultValue)
Convert a
String
to an
short
, returning a
default value if the conversion fails.
LONG_INT_MAX_VALUE
public static final Long LONG_INT_MAX_VALUE
Since:
3.12.0
LONG_INT_MIN_VALUE
public static final Long LONG_INT_MIN_VALUE
Since:
3.12.0
NumberUtils
public NumberUtils()
NumberUtils
instances should NOT be constructed in standard programming.
Instead, the class should be used as
NumberUtils.toInt("6");
.
This constructor is public to permit tools that require a JavaBean instance
to operate.
public static int compare(byte x,
byte y)
Compares two
byte
values numerically. This is the same functionality as provided in Java 7.
Parameters:
x
- the first
byte
to compare
y
- the second
byte
to compare
Returns:
the value
0
if
x == y
;
a value less than
0
if
x < y
; and
a value greater than
0
if
x > y
Since:
public static int compare(int x,
int y)
Compares two
int
values numerically. This is the same functionality as provided in Java 7.
Parameters:
x
- the first
int
to compare
y
- the second
int
to compare
Returns:
the value
0
if
x == y
;
a value less than
0
if
x < y
; and
a value greater than
0
if
x > y
Since:
public static int compare(long x,
long y)
Compares to
long
values numerically. This is the same functionality as provided in Java 7.
Parameters:
x
- the first
long
to compare
y
- the second
long
to compare
Returns:
the value
0
if
x == y
;
a value less than
0
if
x < y
; and
a value greater than
0
if
x > y
Since:
public static int compare(short x,
short y)
Compares to
short
values numerically. This is the same functionality as provided in Java 7.
Parameters:
x
- the first
short
to compare
y
- the second
short
to compare
Returns:
the value
0
if
x == y
;
a value less than
0
if
x < y
; and
a value greater than
0
if
x > y
Since:
createBigDecimal
public static BigDecimal createBigDecimal(String str)
Parameters:
str
- a
String
to convert, may be null
Returns:
converted
BigDecimal
(or null if the input is null)
Throws:
NumberFormatException
- if the value cannot be converted
createBigInteger
public static BigInteger createBigInteger(String str)
Convert a
String
to a
BigInteger
;
since 3.2 it handles hexadecimal (0x or #) and octal (0) notations.
Returns
null
if the string is
null
.
Parameters:
str
- a
String
to convert, may be null
Returns:
converted
BigInteger
(or null if the input is null)
Throws:
NumberFormatException
- if the value cannot be converted
createDouble
public static Double createDouble(String str)
Convert a
String
to a
Double
.
Returns
null
if the string is
null
.
Parameters:
str
- a
String
to convert, may be null
Returns:
converted
Double
(or null if the input is null)
Throws:
NumberFormatException
- if the value cannot be converted
createFloat
public static Float createFloat(String str)
Convert a
String
to a
Float
.
Returns
null
if the string is
null
.
Parameters:
str
- a
String
to convert, may be null
Returns:
converted
Float
(or null if the input is null)
Throws:
NumberFormatException
- if the value cannot be converted
createInteger
public static Integer createInteger(String str)
Convert a
String
to a
Integer
, handling
hexadecimal (0xhhhh) and octal (0dddd) notations.
N.B. a leading zero means octal; spaces are not trimmed.
Returns
null
if the string is
null
.
Parameters:
str
- a
String
to convert, may be null
Returns:
converted
Integer
(or null if the input is null)
Throws:
NumberFormatException
- if the value cannot be converted
public static Long createLong(String str)
Convert a
String
to a
Long
;
since 3.1 it handles hexadecimal (0Xhhhh) and octal (0ddd) notations.
N.B. a leading zero means octal; spaces are not trimmed.
Returns
null
if the string is
null
.
Parameters:
str
- a
String
to convert, may be null
Returns:
converted
Long
(or null if the input is null)
Throws:
NumberFormatException
- if the value cannot be converted
createNumber
public static Number createNumber(String str)
Turns a string value into a java.lang.Number.
If the string starts with
0x
or
-0x
(lower or upper case) or
#
or
-#
, it
will be interpreted as a hexadecimal Integer - or Long, if the number of digits after the
prefix is more than 8 - or BigInteger if there are more than 16 digits.
Then, the value is examined for a type qualifier on the end, i.e. one of
'f', 'F', 'd', 'D', 'l', 'L'
. If it is found, it starts
trying to create successively larger types from the type specified
until one is found that can represent the value.
If a type specifier is not found, it will check for a decimal point
and then try successively larger types from
Integer
to
BigInteger
and from
Float
to
BigDecimal
.
Integral values with a leading
0
will be interpreted as octal; the returned number will
be Integer, Long or BigDecimal as appropriate.
Returns
null
if the string is
null
.
This method does not trim the input string, i.e., strings with leading
or trailing spaces will generate NumberFormatExceptions.
Parameters:
str
- String containing a number, may be null
Returns:
Number created from the string (or null if the input is null)
Throws:
NumberFormatException
- if the value cannot be converted
isCreatable
public static boolean isCreatable(String str)
Checks whether the String is a valid Java number.
Valid numbers include hexadecimal marked with the
0x
or
0X
qualifier, octal numbers, scientific notation and
numbers marked with a type qualifier (e.g. 123L).
Non-hexadecimal strings beginning with a leading zero are
treated as octal values. Thus the string
09
will return
false
, since
9
is not a valid octal value.
However, numbers beginning with
0.
are treated as decimal.
null
and empty/blank
String
will return
false
.
Note,
createNumber(String)
should return a number for every
input resulting in
true
.
Parameters:
str
- the
String
to check
Returns:
true
if the string is a correctly formatted number
Since:
isDigits
public static boolean isDigits(String str)
Checks whether the
String
contains only
digit characters.
null
and empty String will return
false
.
Parameters:
str
- the
String
to check
Returns:
true
if str contains only Unicode numeric
@Deprecated
public static boolean isNumber(String str)
Deprecated.
Checks whether the String is a valid Java number.
Valid numbers include hexadecimal marked with the
0x
or
0X
qualifier, octal numbers, scientific notation and
numbers marked with a type qualifier (e.g. 123L).
Non-hexadecimal strings beginning with a leading zero are
treated as octal values. Thus the string
09
will return
false
, since
9
is not a valid octal value.
However, numbers beginning with
0.
are treated as decimal.
null
and empty/blank
String
will return
false
.
Note,
createNumber(String)
should return a number for every
input resulting in
true
.
Parameters:
str
- the
String
to check
Returns:
true
if the string is a correctly formatted number
Since:
3.3 the code supports hexadecimal
0Xhhh
an
octal
0ddd
validation
isParsable
public static boolean isParsable(String str)
Parameters:
str
- the String to check.
Returns:
true
if the string is a parsable number.
Since:
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from max(byte[]) to max(byte...)
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from max(double[]) to max(double...)
See Also:
IEEE754rUtils for a version of this method that handles NaN differently
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from max(float[]) to max(float...)
See Also:
IEEE754rUtils for a version of this method that handles NaN differently
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from max(int[]) to max(int...)
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from max(long[]) to max(long...)
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from max(short[]) to max(short...)
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from min(byte[]) to min(byte...)
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from min(double[]) to min(double...)
See Also:
IEEE754rUtils for a version of this method that handles NaN differently
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from min(float[]) to min(float...)
See Also:
IEEE754rUtils for a version of this method that handles NaN differently
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from min(int[]) to min(int...)
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from min(long[]) to min(long...)
Throws:
NullPointerException
- if
array
is
null
IllegalArgumentException
- if
array
is empty
Since:
3.4 Changed signature from min(short[]) to min(short...)
public static byte toByte(String str)
Convert a
String
to a
byte
, returning
zero
if the conversion fails.
If the string is
null
,
zero
is returned.
NumberUtils.toByte(null) = 0
NumberUtils.toByte("") = 0
NumberUtils.toByte("1") = 1
Parameters:
str
- the string to convert, may be null
Returns:
the byte represented by the string, or
zero
if
conversion fails
Since:
public static byte toByte(String str,
byte defaultValue)
Convert a
String
to a
byte
, returning a
default value if the conversion fails.
If the string is
null
, the default value is returned.
NumberUtils.toByte(null, 1) = 1
NumberUtils.toByte("", 1) = 1
NumberUtils.toByte("1", 0) = 1
Parameters:
str
- the string to convert, may be null
defaultValue
- the default value
Returns:
the byte represented by the string, or the default if conversion fails
Since:
toDouble
public static double toDouble(BigDecimal value)
Convert a
BigDecimal
to a
double
.
If the
BigDecimal
value
is
null
, then the specified default value is returned.
NumberUtils.toDouble(null) = 0.0d
NumberUtils.toDouble(BigDecimal.valueOf(8.5d)) = 8.5d
Parameters:
value
- the
BigDecimal
to convert, may be
null
.
Returns:
the double represented by the
BigDecimal
or
0.0d
if the
BigDecimal
is
null
.
Since:
public static double toDouble(BigDecimal value,
double defaultValue)
Convert a
BigDecimal
to a
double
.
If the
BigDecimal
value
is
null
, then the specified default value is returned.
NumberUtils.toDouble(null, 1.1d) = 1.1d
NumberUtils.toDouble(BigDecimal.valueOf(8.5d), 1.1d) = 8.5d
Parameters:
value
- the
BigDecimal
to convert, may be
null
.
defaultValue
- the default value
Returns:
the double represented by the
BigDecimal
or the
defaultValue if the
BigDecimal
is
null
.
Since:
toDouble
public static double toDouble(String str)
Convert a
String
to a
double
, returning
0.0d
if the conversion fails.
If the string
str
is
null
,
0.0d
is returned.
NumberUtils.toDouble(null) = 0.0d
NumberUtils.toDouble("") = 0.0d
NumberUtils.toDouble("1.5") = 1.5d
Parameters:
str
- the string to convert, may be
null
Returns:
the double represented by the string, or
0.0d
if conversion fails
Since:
public static double toDouble(String str,
double defaultValue)
Convert a
String
to a
double
, returning a
default value if the conversion fails.
If the string
str
is
null
, the default
value is returned.
NumberUtils.toDouble(null, 1.1d) = 1.1d
NumberUtils.toDouble("", 1.1d) = 1.1d
NumberUtils.toDouble("1.5", 0.0d) = 1.5d
Parameters:
str
- the string to convert, may be
null
defaultValue
- the default value
Returns:
the double represented by the string, or defaultValue
if conversion fails
Since:
toFloat
public static float toFloat(String str)
Convert a
String
to a
float
, returning
0.0f
if the conversion fails.
If the string
str
is
null
,
0.0f
is returned.
NumberUtils.toFloat(null) = 0.0f
NumberUtils.toFloat("") = 0.0f
NumberUtils.toFloat("1.5") = 1.5f
Parameters:
str
- the string to convert, may be
null
Returns:
the float represented by the string, or
0.0f
if conversion fails
Since:
public static float toFloat(String str,
float defaultValue)
Convert a
String
to a
float
, returning a
default value if the conversion fails.
If the string
str
is
null
, the default
value is returned.
NumberUtils.toFloat(null, 1.1f) = 1.0f
NumberUtils.toFloat("", 1.1f) = 1.1f
NumberUtils.toFloat("1.5", 0.0f) = 1.5f
Parameters:
str
- the string to convert, may be
null
defaultValue
- the default value
Returns:
the float represented by the string, or defaultValue
if conversion fails
Since:
public static int toInt(String str)
Convert a
String
to an
int
, returning
zero
if the conversion fails.
If the string is
null
,
zero
is returned.
NumberUtils.toInt(null) = 0
NumberUtils.toInt("") = 0
NumberUtils.toInt("1") = 1
Parameters:
str
- the string to convert, may be null
Returns:
the int represented by the string, or
zero
if
conversion fails
Since:
public static int toInt(String str,
int defaultValue)
Convert a
String
to an
int
, returning a
default value if the conversion fails.
If the string is
null
, the default value is returned.
NumberUtils.toInt(null, 1) = 1
NumberUtils.toInt("", 1) = 1
NumberUtils.toInt("1", 0) = 1
Parameters:
str
- the string to convert, may be null
defaultValue
- the default value
Returns:
the int represented by the string, or the default if conversion fails
Since:
public static long toLong(String str)
Convert a
String
to a
long
, returning
zero
if the conversion fails.
If the string is
null
,
zero
is returned.
NumberUtils.toLong(null) = 0L
NumberUtils.toLong("") = 0L
NumberUtils.toLong("1") = 1L
Parameters:
str
- the string to convert, may be null
Returns:
the long represented by the string, or
0
if
conversion fails
Since:
public static long toLong(String str,
long defaultValue)
Convert a
String
to a
long
, returning a
default value if the conversion fails.
If the string is
null
, the default value is returned.
NumberUtils.toLong(null, 1L) = 1L
NumberUtils.toLong("", 1L) = 1L
NumberUtils.toLong("1", 0L) = 1L
Parameters:
str
- the string to convert, may be null
defaultValue
- the default value
Returns:
the long represented by the string, or the default if conversion fails
Since:
toScaledBigDecimal
public static BigDecimal toScaledBigDecimal(BigDecimal value)
Convert a
BigDecimal
to a
BigDecimal
with a scale of
two that has been rounded using
RoundingMode.HALF_EVEN
. If the supplied
value
is null, then
BigDecimal.ZERO
is returned.
Note, the scale of a
BigDecimal
is the number of digits to the right of the
decimal point.
Parameters:
value
- the
BigDecimal
to convert, may be null.
Returns:
the scaled, with appropriate rounding,
BigDecimal
.
Since:
toScaledBigDecimal
public static BigDecimal toScaledBigDecimal(BigDecimal value,
int scale,
RoundingMode roundingMode)
Convert a
BigDecimal
to a
BigDecimal
whose scale is the
specified value with a
RoundingMode
applied. If the input
value
is
null
, we simply return
BigDecimal.ZERO
.
Parameters:
value
- the
BigDecimal
to convert, may be null.
scale
- the number of digits to the right of the decimal point.
roundingMode
- a rounding behavior for numerical operations capable of
discarding precision.
Returns:
the scaled, with appropriate rounding,
BigDecimal
.
Since:
toScaledBigDecimal
public static BigDecimal toScaledBigDecimal(Double value)
Convert a
Double
to a
BigDecimal
with a scale of
two that has been rounded using
RoundingMode.HALF_EVEN
. If the supplied
value
is null, then
BigDecimal.ZERO
is returned.
Note, the scale of a
BigDecimal
is the number of digits to the right of the
decimal point.
Parameters:
value
- the
Double
to convert, may be null.
Returns:
the scaled, with appropriate rounding,
BigDecimal
.
Since:
toScaledBigDecimal
public static BigDecimal toScaledBigDecimal(Double value,
int scale,
RoundingMode roundingMode)
Convert a
Double
to a
BigDecimal
whose scale is the
specified value with a
RoundingMode
applied. If the input
value
is
null
, we simply return
BigDecimal.ZERO
.
Parameters:
value
- the
Double
to convert, may be null.
scale
- the number of digits to the right of the decimal point.
roundingMode
- a rounding behavior for numerical operations capable of
discarding precision.
Returns:
the scaled, with appropriate rounding,
BigDecimal
.
Since:
toScaledBigDecimal
public static BigDecimal toScaledBigDecimal(Float value)
Convert a
Float
to a
BigDecimal
with a scale of
two that has been rounded using
RoundingMode.HALF_EVEN
. If the supplied
value
is null, then
BigDecimal.ZERO
is returned.
Note, the scale of a
BigDecimal
is the number of digits to the right of the
decimal point.
Parameters:
value
- the
Float
to convert, may be null.
Returns:
the scaled, with appropriate rounding,
BigDecimal
.
Since:
toScaledBigDecimal
public static BigDecimal toScaledBigDecimal(Float value,
int scale,
RoundingMode roundingMode)
Convert a
Float
to a
BigDecimal
whose scale is the
specified value with a
RoundingMode
applied. If the input
value
is
null
, we simply return
BigDecimal.ZERO
.
Parameters:
value
- the
Float
to convert, may be null.
scale
- the number of digits to the right of the decimal point.
roundingMode
- a rounding behavior for numerical operations capable of
discarding precision.
Returns:
the scaled, with appropriate rounding,
BigDecimal
.
Since:
toScaledBigDecimal
public static BigDecimal toScaledBigDecimal(String value)
Convert a
String
to a
BigDecimal
with a scale of
two that has been rounded using
RoundingMode.HALF_EVEN
. If the supplied
value
is null, then
BigDecimal.ZERO
is returned.
Note, the scale of a
BigDecimal
is the number of digits to the right of the
decimal point.
Parameters:
value
- the
String
to convert, may be null.
Returns:
the scaled, with appropriate rounding,
BigDecimal
.
Since:
toScaledBigDecimal
public static BigDecimal toScaledBigDecimal(String value,
int scale,
RoundingMode roundingMode)
Convert a
String
to a
BigDecimal
whose scale is the
specified value with a
RoundingMode
applied. If the input
value
is
null
, we simply return
BigDecimal.ZERO
.
Parameters:
value
- the
String
to convert, may be null.
scale
- the number of digits to the right of the decimal point.
roundingMode
- a rounding behavior for numerical operations capable of
discarding precision.
Returns:
the scaled, with appropriate rounding,
BigDecimal
.
Since:
toShort
public static short toShort(String str)
Convert a
String
to a
short
, returning
zero
if the conversion fails.
If the string is
null
,
zero
is returned.
NumberUtils.toShort(null) = 0
NumberUtils.toShort("") = 0
NumberUtils.toShort("1") = 1
Parameters:
str
- the string to convert, may be null
Returns:
the short represented by the string, or
zero
if
conversion fails
Since:
public static short toShort(String str,
short defaultValue)
Convert a
String
to an
short
, returning a
default value if the conversion fails.
If the string is
null
, the default value is returned.
NumberUtils.toShort(null, 1) = 1
NumberUtils.toShort("", 1) = 1
NumberUtils.toShort("1", 0) = 1
Parameters:
str
- the string to convert, may be null
defaultValue
- the default value
Returns:
the short represented by the string, or the default if conversion fails
Since: