From 2f2be05b8caedd31bfd9d68110ea8c1267971f03 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Fri, 07 Mar 2025 12:22:37 +0800
Subject: [PATCH] 知识库,优化文案

---
 common/Tools.js |   40 +++++++++++++++++++++++++++++++++-------
 1 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/common/Tools.js b/common/Tools.js
index 5625cfd..2f0635d 100644
--- a/common/Tools.js
+++ b/common/Tools.js
@@ -461,7 +461,7 @@
     /**
      * 数值转换为千分位格式
      * @param {Number|String} number - 传入的值
-     * @param {String} decimalFormat - 处理小数的方式  - notRetain(不保留小数,没有小数时才生效),keepTwo(保留两位小数),keepThree(保留三位小数)
+     * @param {String} decimalFormat - 处理小数的方式  - notRetain(不保留小数,有小数时也会去掉小数位),keepTwo(保留两位小数),keepThree(保留三位小数)
      * @return {string}
      */
     static thousandFormat(number, decimalFormat = 'keepTwo') {
@@ -477,9 +477,7 @@
         // 没有小数位
         if (!(num.indexOf('.') > -1)) {
             needThousand = num.toString();
-            if (decimalFormat === 'notRetain') {
-                decimals = '';
-            } else if (decimalFormat === 'keepTwo') {
+            if (decimalFormat === 'keepTwo') {
                 decimals = '00';
             } else if (decimalFormat === 'keepThree') {
                 decimals = '000';
@@ -489,9 +487,9 @@
         else if (num.indexOf('.') > -1) {
             needThousand = num.split('.')[0].toString();
             if (decimalFormat === 'keepTwo') {
-                decimals = Number(num?.split('.')[1])?.toFixed(2)?.split('.')[1] || '';
+                decimals = Number(num).toFixed(2).split('.')[1] || '';
             } else if (decimalFormat === 'keepThree') {
-                decimals = Number(num?.split('.')[1])?.toFixed(3)?.split('.')[1] || '';
+                decimals = Number(num).toFixed(3).split('.')[1] || '';
             }
         }
         // 计算整数位长度
@@ -506,7 +504,9 @@
             let temp = '';
             // 对整数取余
             let remainder = len % 3;
-            decimals ? (temp = '.' + decimals) : temp;
+            if (decimals) {
+                temp = '.' + decimals;
+            }
             if (remainder > 0) {
                 // 不是3的整数倍
                 return (
@@ -652,6 +652,32 @@
             }
         };
     }
+    /**
+     * 精确保留小数点几位数, 自动补零, 四舍五入
+     *  修复 toFixed 四舍六入五讨论的问题
+     * @param {Number|String} num 数值
+     * @param {Number} [digit=0] 小数点后位数
+     * @returns {String|NaN}
+     */
+    static accFixed(num, digit = 0) {
+        const number = parseFloat(num);
+        if (isNaN(number)) {
+            return NaN;
+        }
+        if (number >= 0) {
+            return (
+                Math.round((number + Number.EPSILON) * Math.pow(10, digit)) / Math.pow(10, digit)
+            ).toFixed(digit);
+        } else {
+            return (
+                '-' +
+                (
+                    Math.round((Math.abs(number) + Number.EPSILON) * Math.pow(10, digit)) /
+                    Math.pow(10, digit)
+                ).toFixed(digit)
+            );
+        }
+    }
 }
 
 // h5 中,实现 rem 转换 px

--
Gitblit v1.9.1