Quellcode durchsuchen

修改fixedNum 里直接 new Decimal(num),当 num 是 JS 数字且存在浮点精度问题

xiongxing vor 1 Monat
Ursprung
Commit
952d6a3fa6
1 geänderte Dateien mit 5 neuen und 4 gelöschten Zeilen
  1. 5 4
      src/utils/formatter.ts

+ 5 - 4
src/utils/formatter.ts

@@ -13,7 +13,8 @@ export const fenToYuanFormat = (_, __, cellValue: any, ___) => {
 //四舍五入 保留两位小数
 export const fixedNum = (num) => {
   if (num !== undefined && num !== null && num !== '' && !isNaN(Number(num))) {
-    return new Decimal(num).toFixed(2)
+    // 先转字符串,避免 number 类型因浮点精度(如 7115.030000000001)超过 15 位有效数字而报错
+    return new Decimal(String(num)).toFixed(2)
   }
 }
 
@@ -33,7 +34,7 @@ export const formatNum = (val: string | number) => {
 
 export const formatCeil = (val: string | number) => {
   if (val && !isNaN(Number(val)) && (val !== undefined && val !== null)) {
-   return new Decimal(val).ceil().toFixed(2)
+   return new Decimal(String(val)).ceil().toFixed(2)
   }else if(val === 0){
     return val
   }
@@ -43,7 +44,7 @@ export const formatCeil = (val: string | number) => {
 // 取整后保留两位小数
 export const formatRound = (val) => {
   if (val !== undefined && val !== null && val !== '' && !isNaN(Number(val))) {
-    return new Decimal(val).round().toFixed(2)
+    return new Decimal(String(val)).round().toFixed(2)
   }
   return ''
 }
@@ -52,7 +53,7 @@ export const formatRound = (val) => {
 // 用于"账单金额单项取整设置" value=2,期望是抹掉所有小数而不是四舍五入
 export const formatTrunc = (val) => {
   if (val !== undefined && val !== null && val !== '' && !isNaN(Number(val))) {
-    return new Decimal(val).trunc().toFixed(2)
+    return new Decimal(String(val)).trunc().toFixed(2)
   }
   return ''
 }