Author: fanningpj
Date: Sat Apr 9 12:30:49 2022
New Revision: 1899683
URL: http://svn.apache.org/viewvc?rev=1899683&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=1899683&r1=1899682&r2=1899683&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 12:30:49 2022
@@ -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
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]