decimal-to-binary-converter

1.0.2 • Public • Published

decimal-to-binary-converter

NPM version Build status Code coverage

This library is an algorithm for converting decimal to binary and show each steps of calculation.

This library was generated by essay(https://github.com/dtinth/essay).

Calculation

This library will show how to calculate them.

// 12.875 to binary
Converting Integer 12 to binary

12 % 2 = 0
12 / 2 = 6

6 % 2 = 0
6 / 2 = 3

3 % 2 = 1
3 / 2 = 1

1 % 2 = 1
1 / 2 = 0

[Answer = 1100]

Converting Float 0.875 to binary

0.875 * 2 = 1.75
1

0.75 * 2 = 1.5
1

0.5 * 2 = 1
1

[Answer = 0.111]
======== binary of 12.875 is 1100.111 ========

Getting started

  1. Install this library
npm i --save decimal-to-binary-converter
  1. import function from this library
import { converter } from 'decimal-to-binary-converter'

API

converter is a function that can be used.

Limitation: floating point of binary maximum default is 10

// main.js
export { converter } from './converter'

Example

There are some examples about simple results of converter.

// converter.test.js
import { expect } from 'chai'
import { converter, convertFloatToBinary, convertIntegerToBinary } from './converter'
 
describe('Converter', () => {
  it('should convert decimal 8 to binary 1000', () => {
    expect(convertIntegerToBinary(8)).to.equal('1000')
  })
 
  it('should convert decimal 0.125 to binary 0.001', () => {
    expect(convertFloatToBinary(0.125)).to.equal('0.001')
  })
 
  it('should convert decimal 12.875 to binary 1100.111', () => {
    expect(converter(12.875)).to.equal('1100.111')
  })
})

Implementation

converter contains two parts

  • convertIntegerToBinary
  • convertFloatToBinary
// converter.js
import _ from 'lodash'
 
export const convertIntegerToBinary = (number) => {
  const result = []
  console.log(`\nConverting Integer ${number} to binary`)
  while (number !== 0) {
    console.log(`\n${number} % 2 = ${number % 2}`)
    console.log(`${number} / 2 = ${number / 2 | 0}`)
    result.push(number % 2)
    number = number / 2 | 0
  }
  const answer = _.reverse(result).join('')
  console.log(`\n[Answer = ${answer}]`)
  return answer
}
 
export const convertFloatToBinary = (number) => {
  const result = []
  console.log(`\nConverting Float ${number} to binary`)
  while (!_.has(result, number) && number % 1 !== parseFloat(0)) {
    console.log(`\n${number} * 2 = ${number * 2}`)
    number *= 2
    console.log(`${number | 0}`)
    result.push(number | 0 === 1 ? 1 : 0)
    number %= 1
    if (result.length > 10) break
  }
  const answer = `0.${result.join('')}`
  console.log(`\n[Answer = ${answer}]`)
  return answer
}
 
export const converter = (number) => {
  const intPart = number | 0
  const floatPart = number % 1
  const resultIntPart = convertIntegerToBinary(intPart)
  const resultFloatPart = convertFloatToBinary(floatPart).split('.').pop()
  const result = `${resultIntPart}.${resultFloatPart}`
  console.log(`======== binary of ${number} is ${result} ========`)
  return result
}
 

Package Sidebar

Install

npm i decimal-to-binary-converter

Weekly Downloads

0

Version

1.0.2

License

MIT

Last publish

Collaborators

  • zugarzeeker