JavaScript超大或超小数值精确度丢失解决方案

article/2025/9/12 1:08:21

情景一

接口字段,Number类型数据失真,解决方法可直接让服务端把字段类型改成String类型即可。

情景二

某些特殊场景,需要保留小数点后9位(及其以上),直接调用Number对象自带的toFixed()函数,会出现小数点后数据失真情况。比如以下这种场景:
在这里插入图片描述
当保留小数点后8位时,数据还是正常的,一旦超过8位,即会出现数据失真情况。
解决方案

	/*** 精确保留小数(可超过9位)* @param {string} num 原数字(输入数字为字符串类型最佳)* @param {num} digits 保留小数位数* @returns 返回字符串类型处理结果*/toFixedPro(num, digits = 0) {//类型强转let zeroStrNum = String(num);//负数标记let isNegativeNum = false// 判断是否为负数if(zeroStrNum.startsWith('-')){isNegativeNum = truezeroStrNum = zeroStrNum.slice(1)}// 获取小数点位置const dotIndex = zeroStrNum.indexOf('.')// 如果是整数/保留小数位数等于超过当前小数长度if(dotIndex === -1 || (zeroStrNum.length - (dotIndex + 1) <= digits)){// 如果事负数,添加负号zeroStrNum = isNegativeNum ? `-${zeroStrNum}` : zeroStrNum//判断是否添加小数点zeroStrNum = dotIndex === -1 ? `${zeroStrNum}.` : zeroStrNum;//补零处理let repair = digits - zeroStrNum.split('.')[1].length;for(let i = 0; i < repair; ++i){zeroStrNum += '0';}return zeroStrNum;}// 找到需要进行四舍五入的部分let numArr = zeroStrNum.match(/\d/g) || [];numArr = numArr.slice(0, dotIndex + digits + 1)// 核心处理逻辑if (parseInt(numArr[numArr.length - 1], 10) > 4) {// 如果最后一位大于4,则往前遍历+1for (let i = numArr.length - 2; i >= 0; i--) {numArr[i] = String(parseInt(numArr[i], 10) + 1);// 判断这位数字 +1 后会不会是 10if (numArr[i] === '10') {// 10的话处理一下变成 0,再次for循环,相当于给前面一个 +1numArr[i] = '0';} else {// 小于10的话,就打断循环,进位成功break;}}}// 将小数点加入数据numArr.splice(dotIndex, 0, ".")// 处理多余位数numArr.pop()// 如果事负数,添加负号if(isNegativeNum){numArr.unshift("-")}log.debug('处理后数据数组:', numArr);return numArr.join('');},

运行示例

	//测试代码let numStr = '123456789.123456789666';console.log('原始数据:', numStr);//123456789.123456789666let resultStr = this.toFixedPro(numStr, 9);console.log('处理结果:', resultStr );//123456789.123456790

至此,结束。


http://chatgpt.dhexx.cn/article/VE94LxE0.shtml

相关文章

关于JavaScript精确度问题

一、js精确度的安全范围是 -2^53 至 2^53 一旦超过这个范围则无法精确表示 1.解决方法 使用第三方包 JSON-Bigint JSONbig.parse() //转换出来的是一个BigNubmer对象 若要使用则用toString()方法 JSONbig.stringify() 2.当axios获取响应数据时自动会将数据JSON.parse()解析为…

【机器学习】准确率、精确度、召回率和 F1 定义

一、说明 数据科学家选择目标变量后 - 例如他们希望预测电子表格中的“列”&#xff0c;并完成了转换数据和构建模型的先决条件&#xff0c;最后步骤之一是评估模型的性能。 二、混淆矩阵的模型 2.1 混淆矩阵 选择性能指标通常取决于要解决的业务问题。假设您的数据集中有 10…

Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标)

机器学习的分类问题常用评论指标有&#xff1a;准确率、精确度、召回率和F1值&#xff0c;还有kappa指标 。 每次调包去找他们的计算代码很麻烦&#xff0c;所以这里一次性定义一个函数&#xff0c;直接计算所有的评价指标。 每次输入预测值和真实值就可以得到上面的指标值&a…

batch_size对精确度和损失的影响

1 问题 在深度学习的学习过程中&#xff0c;模型性能对batchsize虽然没有学习率那么敏感&#xff0c;但是在进一步提升模型性能时&#xff0c;batch_size就会成为一个非常关键的参数。 batch_size对精度和损失的影响研究。 batch_size [,32,64,128&#xff0c;256] 不同batch_…

准度、精度傻傻分不清?

[导读] 做电子产品&#xff0c;常常遇到测量。此时就难免会关注到精度、准度等概念&#xff0c;遇到不少朋友对这两个概念不清楚&#xff0c;今天就来分享一下这两个概念。最近很忙&#xff0c;更的不及时&#xff0c;实在抱歉。也感谢大家不离不弃&#xff01;对于更文分享这件…

机器学习笔记--classification_report精确度/召回率/F1值

classification_report简介 sklearn中的classification_report函数用于显示主要分类指标的文本报告&#xff0e;在报告中显示每个类的精确度&#xff0c;召回率&#xff0c;F1值等信息。 主要参数: y_true&#xff1a;1维数组&#xff0c;或标签指示器数组/稀疏矩阵&#xf…

YOLOv5~目标检测模型精确度

还是yolo5的基础啊~~ 一些关于目标检测模型的评估指标&#xff1a;IOU、TP&FP&FN&TN、mAP等&#xff0c;并列举了目标检测中的mAP计算。 指标评估(重要的一些定义) IOU 也称重叠度表示计算预测回归框和真实回归框的交并比,计算公式如下: TP&FP&FN&…

睿智的目标检测20——利用mAP计算目标检测精确度

睿智的目标检测20——利用mAP计算目标检测精确度 学习前言GITHUB代码下载知识储备1、IOU的概念2、TP TN FP FN的概念3、precision&#xff08;精确度&#xff09;和recall&#xff08;召回率&#xff09;4、概念举例5、单个指标的局限性 什么是AP绘制mAP 学习前言 好多人都想算…

误差与精度

机械专业用于教授学生误差与精度概念的课程叫做《公差与测量》或者叫做《机械精度设计》&#xff0c;而公差或者精度的本质含义就是误差的大小&#xff0c;公差越小&#xff0c;误差越小&#xff0c;精度越高。所以机械专业这门课其本质教授的还是误差理论。 在学校并没有好好学…

层次分析法 AHP

层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;简称 AHP&#xff09;是对一些较为复杂、较为模糊的问题作出决策的简易方法&#xff0c;它特别适用于那些难于完全定量分析的问题。它是美国运筹学家 T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活而…

权重计算方法一:层次分析法(AHP)

目录 1.层次分析法原理介绍 2.层次分析法建模步骤 3.案例分析 3.1 题目简述 3.2 确定评价指标&#xff0c;建立层次关系 3.3 构造判断矩阵 3.3.1 标度定义 3.3.2 构造判断矩阵 3.4 一致性检验 3.5 层次总排序 4.代码实现 1.层次分析法原理介绍 关于层次分析法的具体原…

【数学建模】层次分析法(AHP)

层次分析法 文章目录 层次分析法用途一、模型介绍一道典型例题1.建立层次结构2.对于同一层次的个元素关于上一层次中的某一准则的重要性进行两两比较&#xff0c;构造两两比较矩阵&#xff08;判断矩阵&#xff09;。2.1 O-C矩阵&#xff08;确定指标的权重&#xff09;2.2 准则…

什么是AHP 层次分析法?

AHP层次分析法(The analytic hierarchy process)是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来&#xff0c;用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度&#xff0c;并合理地给出每个决策…

[评价体系] 2、层次分析法AHP原理、例题

目录 1 基本介绍 2 建立步骤 2.1 建立递阶式层次结构模型 2.2 构造比较判断矩阵 2.3 层次单排序及一致性检验 2.4 层次总排序及其一致性检验 2.5 数据加权 3 案例&#xff1a;某学科创新能力评价指标体系 3.1 构建评价指标体系 3.2 构造判断矩阵及一致性检验 3.3 …

数学建模方法——层次分析法(AHP)

目录&#xff1a; 层次分析法简介层次分析法基本原理构造判断矩阵一致性检验一致性检验通过的判断矩阵求权重 4.1 算数平均法求权重 4.2 几何平均法求权重 4.3 特征值法求权重总结 0. 层次分析法简介 层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;简称AHP&…

层次分析法(AHP)算法简介

一、模型介绍 层次分析法&#xff08;AHP&#xff09;是美国运筹学家萨蒂于上世纪70年代初&#xff0c;为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时&#xff0c;应用网络系统理论和多目标综合评价方法&#xff0c;提出的一种层次权重决策分…

层次分析法(AHP)原理_例题应用及代码

层次分析法(AHP)原理应用及代码 1.AHP算法步骤2.算法举例第一步:建立递阶层次图第二步:建立判断矩阵计算五个指标的判断矩阵计算三个方案相对于某一指标的权重第三步:进行一致性检验一致性检验的步骤第一步:计算一致性指标 C I CI CI第二步:查找对应的平均随机一致性指标…

小话层次分析法(AHP)

在目标决策领域&#xff0c;有的决策数据信息是量化的&#xff0c;如一个项目的未来收益、消耗成本等&#xff0c;通过对各种信息进行计算可以做出较好的决策&#xff1b;但有的决策数据信息并不全是数字化的&#xff0c;如项目信息为“这个收益更好”、“这个成本更高”这样的…

清风数学建模学习笔记——层次分析法(AHP)

层次分析法 层次分析法&#xff08;analytic hierarchy process&#xff09;&#xff0c;简称AHP。是建模比赛中比较基础的模型之一&#xff0c;其主要解决评价类的问题。如选择哪种方案最好&#xff0c;哪位员工表现最好等。 它是一个较为 主观 的评价方法&#xff0c;其在赋权…

层次分析法-yaahp软件使用

yaahp下载资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Y08-wgn0YTzrDCaqToZLRg 提取码&#xff1a;avkc 目录 一.打开yaahp软件 1.新建AHP空白文件 2.进入画布页面。 3.点击检查模型按钮&#xff0c;检查模型是否正确 二、构造判断矩阵 1.先创建决策…