psteitz 2003/09/05 08:55:09
Modified: lang/src/java/org/apache/commons/lang/math NumberUtils.java
lang/src/test/org/apache/commons/lang/math
NumberUtilsTest.java
Log:
Added stringToDouble, stringToLong functions to NumberUtils.
Patch supplied by Fredrik Westermarck
Reviewd by Phil Steitz
Revision Changes Path
1.12 +76 -3
jakarta-commons/lang/src/java/org/apache/commons/lang/math/NumberUtils.java
Index: NumberUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/math/NumberUtils.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- NumberUtils.java 4 Sep 2003 07:27:12 -0000 1.11
+++ NumberUtils.java 5 Sep 2003 15:55:09 -0000 1.12
@@ -156,6 +156,40 @@
}
/**
+ * <p>Convert a <code>String</code> to a <code>long</code>, returning
+ * <code>zero</code> if the conversion fails.</p>
+ *
+ * <p>If the string is <code>null</code>, <code>zero</code> is returned.</p>
+ *
+ * @param str the string to convert, may be null
+ * @return the long represented by the string, or <code>0</code> if
+ * conversion fails
+ * @since 2.1
+ */
+ public static long stringToLong(String str) {
+ return stringToLong(str, 0L);
+ }
+
+ /**
+ * <p>Convert a <code>String</code> to a <code>long</code>, returning a
+ * default value if the conversion fails.</p>
+ *
+ * <p>If the string is <code>null</code>, the default value is returned.</p>
+ *
+ * @param str the string to convert, may be null
+ * @param defaultValue the default value
+ * @return the long represented by the string, or the default if conversion
fails
+ * @since 2.1
+ */
+ public static long stringToLong(String str, long defaultValue) {
+ try {
+ return Long.parseLong(str);
+ } catch (NumberFormatException nfe) {
+ return defaultValue;
+ }
+ }
+
+ /**
* <p>Convert a <code>String</code> to a <code>float</code>, returning
* <code>0.0f</code> if the conversion fails.</p>
*
@@ -187,10 +221,49 @@
public static float stringToFloat(String str, float defaultValue) {
if(str==null) {
return defaultValue;
- }
-
+ }
try {
return Float.parseFloat(str);
+ } catch (NumberFormatException nfe) {
+ return defaultValue;
+ }
+ }
+
+ /**
+ * <p>Convert a <code>String</code> to a <code>double</code>, returning
+ * <code>0.0d</code> if the conversion fails.</p>
+ *
+ * <p>If the string <code>str</code> is <code>null</code>,
+ * <code>0.0d</code> is returned.</p>
+ *
+ * @param str the string to convert, may be <code>null</code>
+ * @return the double represented by the string, or <code>0.0d</code>
+ * if conversion fails
+ * @since 2.1
+ */
+ public static double stringToDouble(String str) {
+ return stringToDouble(str, 0.0d);
+ }
+
+ /**
+ * <p>Convert a <code>String</code> to a <code>double</code>, returning a
+ * default value if the conversion fails.</p>
+ *
+ * <p>If the string <code>str</code> is <code>null</code>, the default
+ * value is returned.</p>
+ *
+ * @param str the string to convert, may be <code>null</code>
+ * @param defaultValue the default value
+ * @return the double represented by the string, or defaultValue
+ * if conversion fails
+ * @since 2.1
+ */
+ public static double stringToDouble(String str, double defaultValue) {
+ if(str==null) {
+ return defaultValue;
+ }
+ try {
+ return Double.parseDouble(str);
} catch (NumberFormatException nfe) {
return defaultValue;
}
1.9 +46 -1
jakarta-commons/lang/src/test/org/apache/commons/lang/math/NumberUtilsTest.java
Index: NumberUtilsTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/math/NumberUtilsTest.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- NumberUtilsTest.java 4 Sep 2003 07:27:12 -0000 1.8
+++ NumberUtilsTest.java 5 Sep 2003 15:55:09 -0000 1.9
@@ -124,12 +124,36 @@
}
/**
+ * Test for long stringToLong(String)
+ */
+ public void testStringToLongString() {
+ assertTrue("stringToLong(String) 1 failed",
NumberUtils.stringToLong("12345") == 12345l);
+ assertTrue("stringToLong(String) 2 failed", NumberUtils.stringToLong("abc")
== 0l);
+ assertTrue("stringToLong(String) 3 failed", NumberUtils.stringToLong("1L")
== 0l);
+ assertTrue("stringToLong(String) 4 failed", NumberUtils.stringToLong("1l")
== 0l);
+ assertTrue("stringToLong(Long.MAX_VALUE) failed",
NumberUtils.stringToLong(Long.MAX_VALUE+"") == Long.MAX_VALUE);
+ assertTrue("stringToLong(Long.MIN_VALUE) failed",
NumberUtils.stringToLong(Long.MIN_VALUE+"") == Long.MIN_VALUE);
+ assertTrue("stringToLong(empty) failed", NumberUtils.stringToLong("") ==
0l);
+ assertTrue("stringToLong(null) failed", NumberUtils.stringToLong(null) ==
0l);
+ }
+
+ /**
+ * Test for long stringToLong(String, long)
+ */
+ public void testStringToLongStringL() {
+ assertTrue("stringToLong(String,long) 1 failed",
NumberUtils.stringToLong("12345", 5l) == 12345l);
+ assertTrue("stringToLong(String,long) 2 failed",
NumberUtils.stringToLong("1234.5", 5l) == 5l);
+ }
+
+ /**
* Test for float stringToFloat(String)
*/
public void testStringToFloatString() {
assertTrue("stringToFloat(String) 1 failed",
NumberUtils.stringToFloat("-1.2345") == -1.2345f);
assertTrue("stringToFloat(String) 2 failed",
NumberUtils.stringToFloat("1.2345") == 1.2345f);
assertTrue("stringToFloat(String) 3 failed",
NumberUtils.stringToFloat("abc") == 0.0f);
+ assertTrue("stringToFloat(Float.MAX_VALUE) failed",
NumberUtils.stringToFloat(Float.MAX_VALUE+"") == Float.MAX_VALUE);
+ assertTrue("stringToFloat(Float.MIN_VALUE) failed",
NumberUtils.stringToFloat(Float.MIN_VALUE+"") == Float.MIN_VALUE);
assertTrue("stringToFloat(empty) failed", NumberUtils.stringToFloat("") ==
0.0f);
assertTrue("stringToFloat(null) failed", NumberUtils.stringToFloat(null) ==
0.0f);
}
@@ -140,6 +164,27 @@
public void testStringToFloatStringF() {
assertTrue("stringToFloat(String,int) 1 failed",
NumberUtils.stringToFloat("1.2345", 5.1f) == 1.2345f);
assertTrue("stringToFloat(String,int) 2 failed",
NumberUtils.stringToFloat("a", 5.0f) == 5.0f);
+ }
+
+ /**
+ * Test for double stringToDouble(String)
+ */
+ public void testStringToDoubleString() {
+ assertTrue("stringToDouble(String) 1 failed",
NumberUtils.stringToDouble("-1.2345") == -1.2345d);
+ assertTrue("stringToDouble(String) 2 failed",
NumberUtils.stringToDouble("1.2345") == 1.2345d);
+ assertTrue("stringToDouble(String) 3 failed",
NumberUtils.stringToDouble("abc") == 0.0d);
+ assertTrue("stringToDouble(Double.MAX_VALUE) failed",
NumberUtils.stringToDouble(Double.MAX_VALUE+"") == Double.MAX_VALUE);
+ assertTrue("stringToDouble(Double.MIN_VALUE) failed",
NumberUtils.stringToDouble(Double.MIN_VALUE+"") == Double.MIN_VALUE);
+ assertTrue("stringToDouble(empty) failed", NumberUtils.stringToDouble("")
== 0.0d);
+ assertTrue("stringToDouble(null) failed", NumberUtils.stringToDouble(null)
== 0.0d);
+ }
+
+ /**
+ * Test for double stringToFloat(String, float)
+ */
+ public void testStringToDoubleStringD() {
+ assertTrue("stringToDouble(String,int) 1 failed",
NumberUtils.stringToDouble("1.2345", 5.1d) == 1.2345d);
+ assertTrue("stringToDouble(String,int) 2 failed",
NumberUtils.stringToDouble("a", 5.0d) == 5.0d);
}
public void testCreateNumber() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]