From 24a124481c8510006a2f9e99c5d2f8db5b723665 Mon Sep 17 00:00:00 2001
From: chensiAb <chenchenco03@163.com>
Date: Thu, 28 Nov 2024 14:40:19 +0800
Subject: [PATCH] feat:tools函数-千分位

---
 common/Tools.js |   64 ++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/common/Tools.js b/common/Tools.js
index fa45243..5625cfd 100644
--- a/common/Tools.js
+++ b/common/Tools.js
@@ -459,6 +459,70 @@
     }
 
     /**
+     * 数值转换为千分位格式
+     * @param {Number|String} number - 传入的值
+     * @param {String} decimalFormat - 处理小数的方式  - notRetain(不保留小数,没有小数时才生效),keepTwo(保留两位小数),keepThree(保留三位小数)
+     * @return {string}
+     */
+    static thousandFormat(number, decimalFormat = 'keepTwo') {
+        if (!number && typeof number !== 'number' && typeof number !== 'string') {
+            return '';
+        }
+        // 原始数据
+        let num = number.toString();
+        // 需要进千分位的数,小数点前的数才需要进行千分位计算,即整数位
+        let needThousand = '';
+        // 小数位
+        let decimals = '';
+        // 没有小数位
+        if (!(num.indexOf('.') > -1)) {
+            needThousand = num.toString();
+            if (decimalFormat === 'notRetain') {
+                decimals = '';
+            } else if (decimalFormat === 'keepTwo') {
+                decimals = '00';
+            } else if (decimalFormat === 'keepThree') {
+                decimals = '000';
+            }
+        }
+        // 存在小数位时
+        else if (num.indexOf('.') > -1) {
+            needThousand = num.split('.')[0].toString();
+            if (decimalFormat === 'keepTwo') {
+                decimals = Number(num?.split('.')[1])?.toFixed(2)?.split('.')[1] || '';
+            } else if (decimalFormat === 'keepThree') {
+                decimals = Number(num?.split('.')[1])?.toFixed(3)?.split('.')[1] || '';
+            }
+        }
+        // 计算整数位长度
+        let len = needThousand.length;
+        // 如果整数位小于3,直接返回
+        if (len <= 3) {
+            return decimals ? needThousand + '.' + decimals : needThousand;
+        }
+        // 整数位大于3
+        else {
+            // 小数位后的值
+            let temp = '';
+            // 对整数取余
+            let remainder = len % 3;
+            decimals ? (temp = '.' + decimals) : temp;
+            if (remainder > 0) {
+                // 不是3的整数倍
+                return (
+                    needThousand.slice(0, remainder) +
+                    ',' +
+                    needThousand.slice(remainder, len).match(/\d{3}/g)?.join(',') +
+                    temp
+                );
+            } else {
+                // 3的整数倍
+                return needThousand.slice(0, len).match(/\d{3}/g)?.join(',') + temp;
+            }
+        }
+    }
+
+    /**
      * 加法函数,用来得到精确的加法结果
      * @param {Number|String} num1
      * @param {Number|String} num2

--
Gitblit v1.9.1