UNPKG

full-accuracy

Version:

This library helps you get the full length of a factorial, without the floating point inaccuracy messing with it

53 lines (35 loc) 942 B
// This code is inspired by Nikita Tiwari. const multiply = (num, array, size) => { let carry = 0; for(let i = 0; i < size; i +=1){ let prod = array[i] * num + carry; console.log({prod}); array[i] = prod % 10; carry = Math.floor(prod/10); } console.log({array, carry, size}) while(carry){ array[size] = carry % 10; carry = Math.floor(carry / 10); size += 1; } return size; } const factorial = (num) => { /* @param{Number} num The number we want to calculate the factorial for. @return {Number} answer The result of the factorial. */ const store = []; let answer = ''; store[0] = 1; let len = 1; for(let x = 2; x <= num; x+=1){ len = multiply(x, store, len); } for(let x = len - 1; x >= 0; x--){ answer += `${store[x]}` } return answer; } module.exports = factorial;