index.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { isNumber } from "./is.js";
  2. // 单位转换
  3. export function convertToUnit(str, unit = 'px') {
  4. if (str == null || str === '') {
  5. return undefined;
  6. } else if (isNaN(+str)) {
  7. return String(str);
  8. } else {
  9. return `${Number(str)}${unit}`;
  10. }
  11. }
  12. /**
  13. * 数据金额格式化
  14. * @param num 需要格式化的数字
  15. * @param place 补全保留小数位
  16. * @param decimal 小数位分隔符
  17. * @param separator 千位分隔符
  18. * @param prefix 前缀
  19. */
  20. export function formatNumber(num, opt = {}) {
  21. if (!num && num !== 0) {
  22. return '';
  23. }
  24. const place = opt?.place ?? 2;
  25. const decimal = opt?.decimal ?? '.';
  26. const separator = opt?.separator ?? ',';
  27. const prefix = opt?.prefix ?? '¥';
  28. num = num + '';
  29. const x = num.split('.');
  30. let right =
  31. num.indexOf('.') > -1
  32. ? x[1].substring(0, place)
  33. : new Array(place).fill(0).join('');
  34. // 位数补全
  35. if (right.length < place) {
  36. right = right + new Array(place - right.length).fill(0).join('');
  37. }
  38. let x1 = x[0];
  39. const x2 = decimal + right;
  40. const rgx = /(\d+)(\d{3})/;
  41. if (separator && !isNumber(separator)) {
  42. while (rgx.test(x1)) {
  43. x1 = x1.replace(rgx, '$1' + separator + '$2');
  44. }
  45. }
  46. return prefix + x1 + x2;
  47. }