Skip to content

Commit 5a47b16

Browse files
authored
122 function compareto fails when comparing -0 and 0 (#124)
* fix -0 and 0 compare
1 parent e44dc50 commit 5a47b16

12 files changed

+49
-16
lines changed

dist/esm/big-decimal.js

+4-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/esm/big-decimal.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/node/js-big-decimal.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,11 @@ function testZero(number) {
166166
Object.defineProperty(exports, "__esModule", ({ value: true }));
167167
exports.compareTo = void 0;
168168
var add_1 = __webpack_require__(217);
169+
var stripTrailingZero_1 = __webpack_require__(859);
169170
function compareTo(number1, number2) {
170-
var _a;
171+
var _a, _b;
171172
var negative = false;
173+
_a = [number1, number2].map(function (n) { return (0, stripTrailingZero_1.stripTrailingZero)(n); }), number1 = _a[0], number2 = _a[1];
172174
if (number1[0] == '-' && number2[0] != "-") {
173175
return -1;
174176
}
@@ -180,7 +182,7 @@ function compareTo(number1, number2) {
180182
number2 = number2.substr(1);
181183
negative = true;
182184
}
183-
_a = (0, add_1.pad)(number1, number2), number1 = _a[0], number2 = _a[1];
185+
_b = (0, add_1.pad)(number1, number2), number1 = _b[0], number2 = _b[1];
184186
if (number1.localeCompare(number2) == 0) {
185187
return 0;
186188
}
@@ -208,6 +210,8 @@ function compareTo(number1, number2) {
208210
return 0;
209211
}
210212
exports.compareTo = compareTo;
213+
function checkZero(number) {
214+
}
211215

212216

213217
/***/ }),
@@ -631,7 +635,7 @@ function stripTrailingZero(number) {
631635
if (number[0] == '.') {
632636
number = '0' + number;
633637
}
634-
if (isNegative) {
638+
if (isNegative && number != '0') {
635639
number = '-' + number;
636640
}
637641
return number;

dist/node/js-big-decimal.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/js-big-decimal.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,11 @@ function testZero(number) {
157157
Object.defineProperty(exports, "__esModule", ({ value: true }));
158158
exports.compareTo = void 0;
159159
var add_1 = __webpack_require__(217);
160+
var stripTrailingZero_1 = __webpack_require__(859);
160161
function compareTo(number1, number2) {
161-
var _a;
162+
var _a, _b;
162163
var negative = false;
164+
_a = [number1, number2].map(function (n) { return (0, stripTrailingZero_1.stripTrailingZero)(n); }), number1 = _a[0], number2 = _a[1];
163165
if (number1[0] == '-' && number2[0] != "-") {
164166
return -1;
165167
}
@@ -171,7 +173,7 @@ function compareTo(number1, number2) {
171173
number2 = number2.substr(1);
172174
negative = true;
173175
}
174-
_a = (0, add_1.pad)(number1, number2), number1 = _a[0], number2 = _a[1];
176+
_b = (0, add_1.pad)(number1, number2), number1 = _b[0], number2 = _b[1];
175177
if (number1.localeCompare(number2) == 0) {
176178
return 0;
177179
}
@@ -199,6 +201,8 @@ function compareTo(number1, number2) {
199201
return 0;
200202
}
201203
exports.compareTo = compareTo;
204+
function checkZero(number) {
205+
}
202206

203207

204208
/***/ }),
@@ -622,7 +626,7 @@ function stripTrailingZero(number) {
622626
if (number[0] == '.') {
623627
number = '0' + number;
624628
}
625-
if (isNegative) {
629+
if (isNegative && number != '0') {
626630
number = '-' + number;
627631
}
628632
return number;

dist/web/js-big-decimal.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "js-big-decimal",
3-
"version": "2.0.6",
3+
"version": "2.0.7",
44
"description": "Work with large numbers on the client side. Round them off to any required precision.",
55
"main": "dist/node/js-big-decimal",
66
"types": "dist/node/big-decimal",

src/compareTo.spec.ts

+3
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,7 @@ describe("compareTo", function () {
6363
it("should: 0.67, .6700 = 0", function () {
6464
expect(compareTo("0.67", ".6700")).toBe(0);
6565
});
66+
it("should: -0, 0 = 0", function () {
67+
expect(compareTo("-0", "0")).toBe(0);
68+
});
6669
});

src/compareTo.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { pad } from './add';
2+
import {stripTrailingZero} from './stripTrailingZero';
23

34
export function compareTo(number1 : string, number2 : string) {
45
let negative = false;
6+
[number1, number2] = [number1, number2].map(n => stripTrailingZero(n));
57
if(number1[0] == '-' && number2[0] != "-"){
68
return -1;
79
}else if(number1[0] != '-' && number2[0] == '-'){
@@ -33,4 +35,8 @@ export function compareTo(number1 : string, number2 : string) {
3335
}
3436
}
3537
return 0;
38+
}
39+
40+
function checkZero(number){
41+
3642
}

src/stripTrailingZero.spec.ts

+15
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,21 @@ describe("stripTrailingZero", function () {
5959
expect(stripTrailingZero("-5.50000000000000000")).toBe("-5.5");
6060
});
6161

62+
// handle zeros
63+
it("should: 0.00000 become 0", function () {
64+
expect(stripTrailingZero("0.00000")).toBe("0");
65+
});
66+
it("should: -0.00000 become 0", function () {
67+
expect(stripTrailingZero("-0.00000")).toBe("0");
68+
});
69+
it("should: 000 become 0", function () {
70+
expect(stripTrailingZero("000")).toBe("0");
71+
});
72+
it("should: -000 become 0", function () {
73+
expect(stripTrailingZero("-000")).toBe("0");
74+
});
75+
76+
6277
// Usage in conjugation with rounding
6378
it("should: result of remove trailing zeroes then rounding 1.550 to 1 digit precision becomes 1.6", function () {
6479
expect((new bigDecimal("1.550")).stripTrailingZero().round(1).getValue()).toBe("1.6");

src/stripTrailingZero.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export function stripTrailingZero(number) {
2121
if (number[0] == '.') {
2222
number = '0' + number;
2323
}
24-
if (isNegative) {
24+
if (isNegative && number != '0') {
2525
number = '-' + number;
2626
}
2727
return number;

0 commit comments

Comments
 (0)