mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-06 17:50:39 +08:00
added check for Integer (#1137)
This commit is contained in:
@ -9,6 +9,11 @@
|
|||||||
|
|
||||||
function BinaryCountSetBits (a) {
|
function BinaryCountSetBits (a) {
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
|
// check whether input is an integer, some non-integer number like, 21.1 have non-terminating binary expansions and hence their binary expansion will contain infinite ones, thus the handling of non-integers (including strings,objects etc. as it is meaningless) has been omitted
|
||||||
|
|
||||||
|
if (!Number.isInteger(a)) throw new TypeError('Argument not an Integer')
|
||||||
|
|
||||||
// convert number into binary representation and return number of set bits in binary representation
|
// convert number into binary representation and return number of set bits in binary representation
|
||||||
return a.toString(2).split('1').length - 1
|
return a.toString(2).split('1').length - 1
|
||||||
}
|
}
|
||||||
|
@ -24,3 +24,9 @@ test('check BinaryCountSetBits of 0 is 0', () => {
|
|||||||
const res = BinaryCountSetBits(0)
|
const res = BinaryCountSetBits(0)
|
||||||
expect(res).toBe(0)
|
expect(res).toBe(0)
|
||||||
})
|
})
|
||||||
|
test('check BinaryCountSetBits of 21.1 throws error', () => {
|
||||||
|
expect(() => BinaryCountSetBits(21.1)).toThrow()
|
||||||
|
})
|
||||||
|
test('check BinaryCountSetBits of {} throws error', () => {
|
||||||
|
expect(() => BinaryCountSetBits({})).toThrow()
|
||||||
|
})
|
||||||
|
Reference in New Issue
Block a user