]> source.dussan.org Git - poi.git/commitdiff
[github-321] Fix issue with rounding in DataFormatter. First try broke a test.
authorPJ Fanning <fanningpj@apache.org>
Sat, 9 Apr 2022 12:30:49 +0000 (12:30 +0000)
committerPJ Fanning <fanningpj@apache.org>
Sat, 9 Apr 2022 12:30:49 +0000 (12:30 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1899683 13f79535-47bb-0310-9956-ffa450edef68

poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java

index b14a058aff4d0beb4f4f2499cb74f8ff41136fc4..78d58e7767873b83cc14a2061a0ecb5317dfa6d8 100644 (file)
@@ -803,7 +803,7 @@ public class DataFormatter {
                 if (obj instanceof BigDecimal) {
                     obj = ((BigDecimal) obj).divide(divider, RoundingMode.HALF_UP);
                 } else if (obj instanceof Double) {
-                    obj = (new BigDecimal(NumberToTextConverter.toText((Double)obj))).divide(divider, RoundingMode.HALF_UP);
+                    obj = (Double) obj / divider.doubleValue();
                 } else {
                     throw new UnsupportedOperationException();
                 }
@@ -948,9 +948,9 @@ public class DataFormatter {
         Format numberFormat = getFormat(cell, cfEvaluator);
         double d = cell.getNumericCellValue();
         if (numberFormat == null) {
-            return NumberToTextConverter.toText(d);
+            return Double.toString(d);
         }
-        String formatted = numberFormat.format(new BigDecimal(NumberToTextConverter.toText(d)));
+        String formatted = numberFormat.format(new BigDecimal(Double.toString(d)));
         return formatted.replaceFirst("E(\\d)", "E+$1"); // to match Excel's E-notation
     }