From e4bd111489923438c88989bc3578d5707ca211f6 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sat, 30 Apr 2022 08:31:31 +0000 Subject: [PATCH] support sqrtpi function git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1900418 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/poi/ss/formula/functions/Sqrtpi.java | 2 ++ .../java/org/apache/poi/ss/formula/functions/TestSqrtpi.java | 1 + 2 files changed, 3 insertions(+) diff --git a/poi/src/main/java/org/apache/poi/ss/formula/functions/Sqrtpi.java b/poi/src/main/java/org/apache/poi/ss/formula/functions/Sqrtpi.java index 18244c8504..dbd02b3c3b 100644 --- a/poi/src/main/java/org/apache/poi/ss/formula/functions/Sqrtpi.java +++ b/poi/src/main/java/org/apache/poi/ss/formula/functions/Sqrtpi.java @@ -56,6 +56,8 @@ public class Sqrtpi implements FreeRefFunction { return ErrorEval.NUM_ERROR; } final double result = Math.sqrt(Math.PI * d); + //NumberToTextConverter reduces the precision to what Excel uses internally + //without this conversion, `result` is too precise return new NumberEval(Double.parseDouble(NumberToTextConverter.toText(result))); } catch (EvaluationException e) { return e.getErrorEval(); diff --git a/poi/src/test/java/org/apache/poi/ss/formula/functions/TestSqrtpi.java b/poi/src/test/java/org/apache/poi/ss/formula/functions/TestSqrtpi.java index 4a2ed628c0..7208f8dbcb 100644 --- a/poi/src/test/java/org/apache/poi/ss/formula/functions/TestSqrtpi.java +++ b/poi/src/test/java/org/apache/poi/ss/formula/functions/TestSqrtpi.java @@ -39,6 +39,7 @@ final class TestSqrtpi { //https://support.microsoft.com/en-us/office/sqrtpi-function-1fb4e63f-9b51-46d6-ad68-b3e7a8b519b4 @Test void testBasic() { + //the expected values were observed in my copy of Excel confirmValue(Arrays.asList(1), 1.77245385090552); confirmValue(Arrays.asList(2), 2.506628274631); } -- 2.39.5