]> granicus.if.org Git - icu/commitdiff
ICU-11276 Fixing test failure related to number range.
authorShane Carr <shane@unicode.org>
Fri, 7 Sep 2018 14:41:19 +0000 (07:41 -0700)
committerShane Carr <shane@unicode.org>
Thu, 27 Sep 2018 21:27:40 +0000 (14:27 -0700)
icu4c/source/i18n/number_decimalquantity.cpp
icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java

index 17ed7ff1884e4f37d5298b348b26749875d62af3..3e1963d97e592ebb24467e7593cc40827fb38498 100644 (file)
@@ -1154,8 +1154,13 @@ const char16_t* DecimalQuantity::checkHealth() const {
 }
 
 bool DecimalQuantity::operator==(const DecimalQuantity& other) const {
-    bool basicEquals = scale == other.scale && precision == other.precision && flags == other.flags
-            && lOptPos == other.lOptPos && lReqPos == other.lReqPos && rReqPos == other.rReqPos
+    bool basicEquals =
+            scale == other.scale
+            && precision == other.precision
+            && flags == other.flags
+            && lOptPos == other.lOptPos
+            && lReqPos == other.lReqPos
+            && rReqPos == other.rReqPos
             && rOptPos == other.rOptPos;
     if (!basicEquals) {
         return false;
@@ -1163,13 +1168,16 @@ bool DecimalQuantity::operator==(const DecimalQuantity& other) const {
 
     if (precision == 0) {
         return true;
-    }
-    for (int m = getUpperDisplayMagnitude(); m >= getLowerDisplayMagnitude(); m--) {
-        if (getDigit(m) != other.getDigit(m)) {
-            return false;
+    } else if (isApproximate) {
+        return origDouble == other.origDouble && origDelta == other.origDelta;
+    } else {
+        for (int m = getUpperDisplayMagnitude(); m >= getLowerDisplayMagnitude(); m--) {
+            if (getDigit(m) != other.getDigit(m)) {
+                return false;
+            }
         }
+        return true;
     }
-    return true;
 }
 
 UnicodeString DecimalQuantity::toString() const {
index 0efa2b79a34135742e64c0b51a00bc67663dc5d7..351a341cbcadd71fc064a1636db24823fc3db126 100644 (file)
@@ -1027,8 +1027,13 @@ public abstract class DecimalQuantity_AbstractBCD implements DecimalQuantity {
         }
         DecimalQuantity_AbstractBCD _other = (DecimalQuantity_AbstractBCD) other;
 
-        boolean basicEquals = scale == _other.scale && precision == _other.precision && flags == _other.flags
-                && lOptPos == _other.lOptPos && lReqPos == _other.lReqPos && rReqPos == _other.rReqPos
+        boolean basicEquals =
+                scale == _other.scale
+                && precision == _other.precision
+                && flags == _other.flags
+                && lOptPos == _other.lOptPos
+                && lReqPos == _other.lReqPos
+                && rReqPos == _other.rReqPos
                 && rOptPos == _other.rOptPos;
         if (!basicEquals) {
             return false;
@@ -1036,13 +1041,16 @@ public abstract class DecimalQuantity_AbstractBCD implements DecimalQuantity {
 
         if (precision == 0) {
             return true;
-        }
-        for (int m = getUpperDisplayMagnitude(); m >= getLowerDisplayMagnitude(); m--) {
-            if (getDigit(m) != _other.getDigit(m)) {
-                return false;
+        } else if (isApproximate) {
+            return origDouble == _other.origDouble && origDelta == _other.origDelta;
+        } else {
+            for (int m = getUpperDisplayMagnitude(); m >= getLowerDisplayMagnitude(); m--) {
+                if (getDigit(m) != _other.getDigit(m)) {
+                    return false;
+                }
             }
+            return true;
         }
-        return true;
     }
 
     /**