- 
    Type:
Bug
 - 
    Resolution: Unresolved
 - 
    Priority:
Major - P3
 - 
    None
 - 
    Affects Version/s: None
 - 
    Component/s: None
 - 
    None
 
- 
        Query Execution
 - 
        ALL
 - 
        Execution Team 2021-06-28, Execution Team 2021-07-12, Execution Team 2021-07-26, Execution Team 2021-08-09, Execution Team 2021-08-23, Execution Team 2021-09-06, Execution Team 2021-09-20, Execution Team 2021-10-04, Execution Team 2021-10-18, Execution Team 2021-11-01, Execution Team 2021-11-15, Execution Team 2021-11-29, Execution Team 2021-12-13, Execution Team 2021-12-27, Execution Team 2022-01-10, Execution Team 2022-01-24, Execution Team 2022-02-07, Execution Team 2022-02-21, Execution Team 2022-03-07, Execution Team 2022-03-21, Execution Team 2022-04-04, Execution Team 2022-04-18, Execution Team 2022-05-02, Execution Team 2022-05-16
 - 
        None
 
- 
        None
 - 
        None
 - 
        None
 - 
        None
 - 
        None
 - 
        None
 
By plugging values into DoubleDoubleSummation and calling getLong(), I've observed that it rounds non-integer values to the nearest integer (e.g., 4.6 rounds up to 5) but with strange tie-breaking behavior. All the values I've tested that end in .5 (nearest integer is a tie) round towards 0. For example, 2.5 becomes 2.
The most common tie-breaking modes round ties away from 0 (2.5 would become 3) or round ties toward the nearest even integer. The current behavior isn't necessarily wrong, but it is unconventional.
I wrote a short unit test to illustrate. Note that this test case passes on my local machine.
diff --git a/src/mongo/util/summation_test.cpp b/src/mongo/util/summation_test.cpp
index c04e6b933f..c18217d055 100644
--- a/src/mongo/util/summation_test.cpp
+++ b/src/mongo/util/summation_test.cpp
@@ -232,4 +232,38 @@ TEST(Summation, ConvertNaNToDecimal) {
     ASSERT_TRUE(sum.getDecimal().isNaN());
     ASSERT_FALSE(sum.getDecimal().isInfinite());
 }
+
+TEST(Summation, RoundingDoubleToLong) {
+    {
+        DoubleDoubleSummation sum;
+        sum.addLong(2);
+        sum.addDouble(0.499);
+        // Rounds towards nearest integer.
+        ASSERT_EQ(sum.getLong(), 2);
+    }
+
+    {
+        DoubleDoubleSummation sum;
+        sum.addLong(2);
+        sum.addDouble(0.501);
+        // Rounds towards nearest integer.
+        ASSERT_EQ(sum.getLong(), 3);
+    }
+
+    {
+        DoubleDoubleSummation sum;
+        sum.addLong(2);
+        sum.addDouble(0.5);
+        // Breaks tie _toward_ 0.
+        ASSERT_EQ(sum.getLong(), 2);
+    }
+
+    {
+        DoubleDoubleSummation sum;
+        sum.addLong(-2);
+        sum.addDouble(-0.5);
+        // Breaks tie _toward_ 0.
+        ASSERT_EQ(sum.getLong(), -2);
+    }
+}
 }  // namespace mongo
- related to
 - 
                    
SERVER-56284 SBE $add with Date and NumberDecimal arguments trips invariant
-         
 - Closed
 
 -