number_format.js 1.3 KB

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