js计算小数不准确问题

今天遇到一个1:余额计算的问题,2:还有一个后端返回小数后四位问题

1:先解决余额计算问题:使用第三方库decimal.js,库根据自己项目去找支持依赖js/vue/react

// 创建 Decimal 实例并进行加法运算,建议使用plus加法,add会有多层嵌套,后期再看可能懵逼
const result = new Decimal(outPrepayRecordTotal.totalAmount)
    .plus(new Decimal(outPrepayRecordTotal.refundTotalAmount))
    .plus(new Decimal(outPrepayRecordTotal.cancelOutHosRefundAmount));

2:再解决前端优化小数点问题,先写一个hook,再在需要的地方格式化就行

import Decimal from 'decimal.js';

/**
 * 初始化数字,两位小数以及更少小数位,返回补零之后的两位小数
 */
export const formateNum = (num: string | number) => {
  if (!num || num == 0) {
    return '0.00';
  }
  const toChangeNum = new Decimal(num).toString();
  const smallNumLength = toChangeNum.split('.')[1]?.length ?? 0;
  if (smallNumLength <= 2) {
    return new Decimal(num).toFixed(2);
  } else {
    return new Decimal(num).toFixed(smallNumLength);
  }
};

posted @ 2025-03-13 13:38  xuelin  阅读(64)  评论(0)    收藏  举报