Skip to content

Thomas-1200/DecimalNumberMaths

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Decimal Number Maths

This is a small lightweight library used to work around floating point math errors when working with decimals in javascript. The library follows BODMAS/PEMDAS.

Setup

Single file:

<script type='module' src='./DecimalNumberMaths.js'></script>

npm package:

npm install decimalnumbermaths

Usage

Single file:

import { dMaths } from './DecimalNumberMaths.js';

let equation = '1 + 2 - 8 * 8';
let result = dMaths(equation); // => -61

npm package:

import { dMaths } from 'decimalnumbermaths';

let equation = '1 + 2 - 8 * 8';
let result = dMaths(equation); // => -61

Supported Operators

  • Parentheses or brackets as '(' and ')'
  • Exponents or orders of as '**'
  • Division as '/'
  • Multiplication as '*'
  • Addition as '+'
  • Subtraction as '-'

**Other javascript math operators such as Math.floor() may not work.

Other Notes

  • To support square-roots cube-roots etc. and exponent operator followed by a fraction in brackets will be treated as an exponent for BODMAS/PEMDAS purposes. This means that:

    dMaths('8 ** (1 / 3)') // => 2

    and

    dMaths('8 ** 1 / 3') // =>  8 / 3 => 2.6666666666666665
  • Spacing is important to the library. I have included a fixSpacing function which is called automatically through calling dMaths however it may not cover all cases. To avoid issues format strings with spaces between operators and numbers with the exception of open and close brackets which do not have a space between the following and proceeding numbers respectively. Here are some examples:

    '8   ** 1/3' => '8 ** 1 / 3'
    '8**( 1 / 3)' => '8 ** (1 / 3)'
    '2+-3' => '2 + -3'