[github-321] Fix issue with rounding in DataFormatter. First try broke a test.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1899683 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2022-04-09 12:30:49 +00:00
parent ac3a104c82
commit c77f1f9fb9
1 changed files with 3 additions and 3 deletions

View 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
}