@mojaloop/ml-number 11.2.7 → 11.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/package.json +4 -4
- package/src/mlnumber.js +18 -0
- package/test/unit/mlnumber.test.js +38 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [11.3.0](https://github.com/mojaloop/ml-number/compare/v11.2.7...v11.3.0) (2025-07-15)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* added isequal to function ([#40](https://github.com/mojaloop/ml-number/issues/40)) ([40c2a0d](https://github.com/mojaloop/ml-number/commit/40c2a0dc3958d25c942d6288359e7289e45db62e))
|
|
11
|
+
|
|
5
12
|
### [11.2.7](https://github.com/mojaloop/ml-number/compare/v11.2.6...v11.2.7) (2025-02-19)
|
|
6
13
|
|
|
7
14
|
### [11.2.6](https://github.com/mojaloop/ml-number/compare/v11.2.5...v11.2.6) (2025-01-24)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mojaloop/ml-number",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.3.0",
|
|
4
4
|
"description": "Mojaloop Number Library implementation that handles decimal processing of amounts/numbers",
|
|
5
5
|
"author": "ModusBox",
|
|
6
6
|
"contributors": [
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"registry": "https://registry.npmjs.org/"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"bignumber.js": "9.1
|
|
49
|
+
"bignumber.js": "9.3.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"audit-ci": "^7.1.0",
|
|
53
|
-
"eslint": "9.
|
|
53
|
+
"eslint": "9.31.0",
|
|
54
54
|
"faucet": "0.0.4",
|
|
55
|
-
"npm-check-updates": "
|
|
55
|
+
"npm-check-updates": "18.0.1",
|
|
56
56
|
"nyc": "17.1.0",
|
|
57
57
|
"pre-commit": "1.2.2",
|
|
58
58
|
"standard": "17.1.2",
|
package/src/mlnumber.js
CHANGED
|
@@ -164,6 +164,24 @@ class MLNumber {
|
|
|
164
164
|
toFixed (decimalPlaces = 4, roundingMode = BigNumber.ROUND_UP) {
|
|
165
165
|
return this.mlNumber.toFixed(decimalPlaces, roundingMode)
|
|
166
166
|
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @function isEqualTo
|
|
170
|
+
*
|
|
171
|
+
* @description Checks if MLNumber is equal to another value
|
|
172
|
+
*
|
|
173
|
+
* @param {string|number|MLNumber} value - Value to compare
|
|
174
|
+
* @return {boolean} - Returns true if equal, false otherwise
|
|
175
|
+
*/
|
|
176
|
+
isEqualTo (value) {
|
|
177
|
+
let compareValue
|
|
178
|
+
if (value instanceof MLNumber) {
|
|
179
|
+
compareValue = value.mlNumber
|
|
180
|
+
} else {
|
|
181
|
+
compareValue = new BigNumber(value)
|
|
182
|
+
}
|
|
183
|
+
return this.mlNumber.isEqualTo(compareValue)
|
|
184
|
+
}
|
|
167
185
|
}
|
|
168
186
|
|
|
169
187
|
module.exports = {
|
|
@@ -182,10 +182,44 @@ test('MLNumber', mlNumberTest => {
|
|
|
182
182
|
test.end()
|
|
183
183
|
})
|
|
184
184
|
|
|
185
|
-
mlNumberTest.test('
|
|
186
|
-
const
|
|
187
|
-
const mlNumber2 = new MLNumber(
|
|
188
|
-
|
|
185
|
+
mlNumberTest.test('isEqualTo should compare MLNumber instances', test => {
|
|
186
|
+
const mlNumber1 = new MLNumber(10)
|
|
187
|
+
const mlNumber2 = new MLNumber(10)
|
|
188
|
+
const mlNumber3 = new MLNumber('10')
|
|
189
|
+
const mlNumber4 = new MLNumber(11)
|
|
190
|
+
test.ok(mlNumber1.isEqualTo(mlNumber2), 'MLNumber(10) is equal to MLNumber(10)')
|
|
191
|
+
test.ok(mlNumber1.isEqualTo(mlNumber3), 'MLNumber(10) is equal to MLNumber("10")')
|
|
192
|
+
test.notOk(mlNumber1.isEqualTo(mlNumber4), 'MLNumber(10) is not equal to MLNumber(11)')
|
|
193
|
+
test.end()
|
|
194
|
+
})
|
|
195
|
+
|
|
196
|
+
mlNumberTest.test('Native JS decimal math should show binary floating point issue', test => {
|
|
197
|
+
// This test demonstrates the classic JS decimal issue
|
|
198
|
+
test.notOk((0.1 + 0.2) === 0.3, 'Native JS (0.1 + 0.2) === 0.3 is false due to floating point error')
|
|
199
|
+
test.end()
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
mlNumberTest.test('MLNumber should handle decimal math correctly', test => {
|
|
203
|
+
// This test demonstrates MLNumber (BigNumber) correct handling
|
|
204
|
+
const mlNumber1 = new MLNumber(0.1)
|
|
205
|
+
const mlNumber2 = new MLNumber(0.2)
|
|
206
|
+
const mlNumber3 = new MLNumber(0.3)
|
|
207
|
+
const sum = mlNumber1.add(mlNumber2)
|
|
208
|
+
test.ok(sum.isEqualTo(mlNumber3), 'MLNumber(0.1) + MLNumber(0.2) is equal to MLNumber(0.3)')
|
|
209
|
+
test.end()
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
mlNumberTest.test('isEqualTo should convert non-MLNumber values to BigNumber for comparison', test => {
|
|
213
|
+
const mlNumber = new MLNumber('123.456')
|
|
214
|
+
// Compare with string
|
|
215
|
+
test.ok(mlNumber.isEqualTo('123.456'), 'MLNumber is equal to string value')
|
|
216
|
+
// Compare with number
|
|
217
|
+
test.ok(mlNumber.isEqualTo(123.456), 'MLNumber is equal to number value')
|
|
218
|
+
// Compare with BigNumber directly
|
|
219
|
+
const BigNumber = require('bignumber.js')
|
|
220
|
+
test.ok(mlNumber.isEqualTo(new BigNumber('123.456')), 'MLNumber is equal to BigNumber value')
|
|
221
|
+
// Compare with different value
|
|
222
|
+
test.notOk(mlNumber.isEqualTo('654.321'), 'MLNumber is not equal to different string value')
|
|
189
223
|
test.end()
|
|
190
224
|
})
|
|
191
225
|
|