Author: sebb
Date: Wed Mar 27 16:29:25 2013
New Revision: 1461697

URL: http://svn.apache.org/r1461697
Log:
Document why double exponent (e and E) seems to work even though the index will 
be wrong

Modified:
    
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java?rev=1461697&r1=1461696&r2=1461697&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
 (original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
 Wed Mar 27 16:29:25 2013
@@ -478,12 +478,14 @@ public class NumberUtils {
         String dec;
         String exp;
         final int decPos = str.indexOf('.');
-        final int expPos = str.indexOf('e') + str.indexOf('E') + 1; // TODO 
assumes both not present
+        final int expPos = str.indexOf('e') + str.indexOf('E') + 1; // assumes 
both not present
+        // if both e and E are present, this is caught by the checks on expPos 
(which prevent IOOBE)
+        // and the parsing which will detect if e or E appear in a number due 
to using the wrong offset
 
         if (decPos > -1) { // there is a decimal point
 
             if (expPos > -1) { // there is an exponent
-                if (expPos < decPos || expPos > str.length()) {
+                if (expPos < decPos || expPos > str.length()) { // prevents 
double exponent causing IOOBE
                     throw new NumberFormatException(str + " is not a valid 
number.");
                 }
                 dec = str.substring(decPos + 1, expPos);
@@ -493,7 +495,7 @@ public class NumberUtils {
             mant = str.substring(0, decPos);
         } else {
             if (expPos > -1) {
-                if (expPos > str.length()) {
+                if (expPos > str.length()) { // prevents double exponent 
causing IOOBE
                     throw new NumberFormatException(str + " is not a valid 
number.");
                 }
                 mant = str.substring(0, expPos);


Reply via email to