MSB MSB - 3 months ago 11
Javascript Question

divide number with decimals javascript

how can I divide number (money) to x number equally
the number could be with one or two decimal or without it

such as

1000
or
100.2
or
112.34


I want to be able to split that number into x part all of them equally, however if it's not odd number the extra number to the last one.

for example

3856 / 3
1285.33
1285.33
1285.34

Answer

Sounds like a pretty straightforward loop/recursion.

Here you go

function divideEvenly(numerator, minPartSize) {
  if(numerator / minPartSize< 2) {
    return [numerator];
  }
  return [minPartSize].concat(divideEvenly(numerator-minPartSize, minPartSize));
}

console.log(divideEvenly(1000, 333));

To get it to be two decimals of currency multiply both numbers by 100 before calling this function then divide each result by 100 and call toFixed(2).

Like so

function divideCurrencyEvenly(numerator, divisor) {
  var minPartSize = +(numerator / divisor).toFixed(2)
  return divideEvenly(numerator*100, minPartSize*100).map(function(v) {
    return (v/100).toFixed(2);
  });
}


console.log(divideCurrencyEvenly(3856, 3));
//=>["1285.33", "1285.33", "1285.34"]