number_format.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. 'use strict';
  2. function numberFormatHelper(num, options = {}) {
  3. const split = num.toString().split('.');
  4. let before = split.shift();
  5. let after = split.length ? split[0] : '';
  6. const delimiter = options.delimiter || ',';
  7. const separator = options.separator || '.';
  8. const precision = options.precision;
  9. let i, len;
  10. if (delimiter) {
  11. const beforeArr = [];
  12. const beforeLength = before.length;
  13. const beforeFirst = beforeLength % 3;
  14. if (beforeFirst) beforeArr.push(before.substr(0, beforeFirst));
  15. for (i = beforeFirst; i < beforeLength; i += 3) {
  16. beforeArr.push(before.substr(i, 3));
  17. }
  18. before = beforeArr.join(delimiter);
  19. }
  20. if (precision) {
  21. const afterLength = after.length;
  22. let afterResult = '';
  23. if (afterLength > precision) {
  24. const afterLast = after[precision];
  25. const last = parseInt(after[precision - 1], 10);
  26. afterResult = after.substr(0, precision - 1) + (afterLast < 5 ? last : last + 1);
  27. } else {
  28. afterResult = after;
  29. for (i = 0, len = precision - afterLength; i < len; i++) {
  30. afterResult += '0';
  31. }
  32. }
  33. after = afterResult;
  34. } else if (precision === 0 || precision === '0') {
  35. after = '';
  36. }
  37. return before + (after ? separator + after : '');
  38. }
  39. module.exports = numberFormatHelper;