From be2a929f44170a9cc8e9b7f3541e582558150130 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sat, 9 Apr 2022 13:55:25 +0000 Subject: [PATCH] [github-321] Fix issue with rounding in DataFormatter. First try broke a test. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1899686 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/poi/ss/usermodel/DataFormatter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java b/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java index 78d58e7767..c7725d3818 100644 --- a/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -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 } -- 2.39.5