Adds basic BigNumber type support

Fixes `To Base` & `From Base` issues as reported on twitter
This commit is contained in:
Matt C 2018-01-03 11:26:31 +00:00
parent 0ba28dc891
commit c241d2f90b
5 changed files with 47 additions and 932 deletions

View file

@ -1,3 +1,4 @@
import BigNumber from "bignumber.js";
/**
* Numerical base operations.
*
@ -18,7 +19,7 @@ const Base = {
/**
* To Base operation.
*
* @param {number} input
* @param {BigNumber} input
* @param {Object[]} args
* @returns {string}
*/
@ -39,7 +40,7 @@ const Base = {
*
* @param {string} input
* @param {Object[]} args
* @returns {number}
* @returns {BigNumber}
*/
runFrom: function(input, args) {
const radix = args[0] || Base.DEFAULT_RADIX;
@ -48,14 +49,14 @@ const Base = {
}
let number = input.replace(/\s/g, "").split("."),
result = parseInt(number[0], radix) || 0;
result = new BigNumber(number[0], radix) || 0;
if (number.length === 1) return result;
// Fractional part
for (let i = 0; i < number[1].length; i++) {
const digit = parseInt(number[1][i], radix);
result += digit / Math.pow(radix, i+1);
const digit = new BigNumber(number[1][i], radix);
result += digit.div(Math.pow(radix, i+1));
}
return result;