From 6ad5b9c2b173ca503a8ecbc38070d5fab312a688 Mon Sep 17 00:00:00 2001 From: Madhurendra Nath Tiwari <68775519+dev-madhurendra@users.noreply.github.com> Date: Fri, 22 Sep 2023 13:49:13 +0530 Subject: [PATCH] added numberOfDigitsUsingLog method (#1364) * added numberOfDigitsUsingLog method * added JSDoc comment --------- Co-authored-by: madhuredra --- Maths/NumberOfDigits.js | 12 +++++++++++- Maths/test/NumberOfDigits.test.js | 11 ++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Maths/NumberOfDigits.js b/Maths/NumberOfDigits.js index 6414c65deb..f2ef656433 100644 --- a/Maths/NumberOfDigits.js +++ b/Maths/NumberOfDigits.js @@ -9,4 +9,14 @@ const numberOfDigit = (n) => Math.abs(n).toString().length -export { numberOfDigit } +/** + * Returns the number of digits of a given integer. + * + * @param {number} n - The integer for which to count digits. + * @returns {number} The number of digits in the integer. + * @see https://math.stackexchange.com/questions/2145480/how-does-the-logarithm-returns-the-number-of-digits-of-a-number + * @author dev-madhurendra + */ +const numberOfDigitsUsingLog = (n) => n === 0 ? 1 : Math.floor(Math.log10(Math.abs(n))) + 1 + +export { numberOfDigit, numberOfDigitsUsingLog } diff --git a/Maths/test/NumberOfDigits.test.js b/Maths/test/NumberOfDigits.test.js index 631e2cce36..bf832c8691 100644 --- a/Maths/test/NumberOfDigits.test.js +++ b/Maths/test/NumberOfDigits.test.js @@ -1,4 +1,4 @@ -import { numberOfDigit } from '../NumberOfDigits' +import { numberOfDigit, numberOfDigitsUsingLog } from '../NumberOfDigits' describe('NumberOfDigits', () => { it('should return the correct number of digits for an integer', () => { @@ -8,4 +8,13 @@ describe('NumberOfDigits', () => { it('should return the correct number of digits for a negative number', () => { expect(numberOfDigit(-2346243)).toBe(7) }) + + it.each([ + [0, 1], + [123423232, 9], + [-123423232, 9], + [9999, 4] + ])('should return the correct number of digits in an integer', (value, expected) => { + expect(numberOfDigitsUsingLog(value)).toBe(expected) + }) })