Author: fanningpj
Date: Sat Apr  9 13:55:25 2022
New Revision: 1899686

URL: http://svn.apache.org/viewvc?rev=1899686&view=rev
Log:
[github-321] Fix issue with rounding in DataFormatter. First try broke a test.

Modified:
    poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java?rev=1899686&r1=1899685&r2=1899686&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java 
Sat Apr  9 13:55:25 2022
@@ -950,7 +950,14 @@ public class DataFormatter {
         if (numberFormat == null) {
             return Double.toString(d);
         }
-        String formatted = numberFormat.format(new 
BigDecimal(Double.toString(d)));
+        String formatted;
+        try {
+            //see https://github.com/apache/poi/pull/321 -- but this sometimes 
fails as Double.toString
+            //can produce strings that can't be parsed by BigDecimal
+            formatted = numberFormat.format(new 
BigDecimal(Double.toString(d)));
+        } catch (NumberFormatException nfe) {
+            formatted = numberFormat.format(d);
+        }
         return formatted.replaceFirst("E(\\d)", "E+$1"); // to match Excel's 
E-notation
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to