当前位置: 首页 > news >正文

大小仅 1KB!超级好用!计算无敌!

大小仅 1KB!超级好用!计算无敌!

js 原生的数字计算是一个令人头痛的问题,最常见的就是浮点数精度丢失。

// 1. 加减运算0.1+0.2// 结果:0.30000000000000004(预期 0.3)0.7-0.1// 结果:0.6000000000000001(预期 0.6)// 2. 乘法精度偏移0.1*0.2// 结果:0.020000000000000004(预期 0.02)3*0.3// 结果:0.8999999999999999(预期 0.9)// 3. 除法结果异常0.3/0.1// 结果:2.9999999999999996(预期 3)1.2/0.2// 结果:5.999999999999999(预期 6)

在金额计算的场景中出现这种问题是很危险的,例如「0.1 元 + .2 元」本应等于 0.3 元,原生计算却会得出 0.30000000000000004 元,直接导致金额显示错误或支付逻辑异常。

不少人会用toFixed四舍五入,保留 2 位小数来格式化数字,它本质上是字符串格式化工具,而非精度修复工具,而且还会带来新的精度问题 ——toFixed的四舍五入规则是 “银行家舍入法”,无法解决底层计算的精度误差。

// 问题1. 四舍五入规则不符合预期1.005.toFixed(2);// 结果:"1.00"(预期 "1.01")2.005.toFixed(2);// 结果:"2.00"(同样问题)1.235.toFixed(2);// 结果:"1.23"(预期 "1.24")// 问题2. 无法修复底层计算误差constsum=0.1+0.2;// 0.30000000000000004sum.toFixed(2);// 结果:"0.30"(表面正确,但误差仍存在,后续再运算仍然有问题)sum.toFixed(10);// 结果:"0.3000000000"(仅隐藏误差,未消除)

number-precision能解决这些问题。

number-precision 的优势在哪?

  • 轻量化,大小仅 1kb
  • API 极简化,只有加减乘除和四舍五入
  • 专注精度问题,无额外心智负担
  • 兼容性好,无额外依赖

适用场景

  • 中小型项目、仅需解决基础加减乘除精度问题的场景(如电商、金融类简单计算)
  • 对包体积敏感的前端项目。

如何使用?

pnpminstallnumber-precision
importNPfrom'number-precision'NP.strip(0.09999999999999998);// = 0.1NP.plus(0.1,0.2);//加法计算 = 0.3, not 0.30000000000000004NP.plus(2.3,2.4);//加法计算 = 4.7, not 4.699999999999999NP.minus(1.0,0.9);//减法计算 = 0.1, not 0.09999999999999998NP.times(3,0.3);//乘法计算 = 0.9, not 0.8999999999999999NP.times(0.362,100);//乘法法计算 = 36.2, not 36.199999999999996NP.divide(1.21,1.1);//除法计算 = 1.1, not 1.0999999999999999NP.round(0.105,2);//四舍五入,保留2位小数 = 0.11, not 0.1

混合的计算:

importNPfrom'number-precision'// (0.8-0.5)x1000,保留2位小数NP.round(NP.times(NP.minus(0.8,0.5),1000),2)// 计算股票收益率NP.round(NP.times(NP.divide(NP.minus(+price,+cost),+cost),100),2)

更复杂的计算场景用什么

number-precision有短小精悍的优势在,基本的运算都能拿捏,但那些要求更高的计算场景用什么库呢?

特点场景库体积优势劣势适用场景
toFixed内置方法,仅用于数字格式化,不解决底层精度问题0无需额外引入,使用便捷无法修复计算误差,四舍五入规则非标准非精确场景的临时格式化
number-precision轻量化,提供加减乘除、四舍五入基础功能,无多余1KB体积极小,API 极简,学习成本低不支持超大整数,无复杂数学运算电商价格计算、表单数字校验
big.js专注十进制浮点数运算,API 简洁,默认精度可配置6KB平衡体积与功能,兼容性好功能少于 decimal.js中小型项目精确计算、数据统计
decimal.js功能全面,支持高精度控制、大数字处理、进制转换、三角函数等,可自定义精度配置32KB精度极高,功能覆盖全,灵活性强体积较大,API 较复杂金融核心计算、科学计算
math.js全能型数学库,支持表达式解析、矩阵运算、单位转换等复杂数学能力160KB综合数学能力强,场景覆盖广体积庞大,性能开销高数据可视化、工程计算
http://www.gsyq.cn/news/110539.html

相关文章:

  • Java 8 Lambda表达式详解 - 实践
  • CSS组件综合实战案例三个:小米侧边栏、五彩导航、列表菜单的样式与链接伪类hover交互
  • 2025北京雅思培训机构攻略:高分考生都在pick的5类优质选择 - 品牌测评鉴赏家
  • LobeChat能否接入Steam API?游戏玩家个性化助手
  • LobeChat能否实现思维导图输出?结构化内容展示尝试
  • 2025 年雅思培训机构怎么选?5 大标杆机构深度测评与避坑指南 - 品牌测评鉴赏家
  • Git 回退到某个 commit
  • 2025年专业滑雪场魔毯生产厂家排行榜,靠谱魔毯服务商推荐 - 工业推荐榜
  • 2025无磁铜包钢制造厂TOP5推荐:看哪家更值得选? - mypinpai
  • pt-table-checksum 工具的校验和原理详解及其与物理文件计算指纹校验的区别
  • LobeChat能否编写教案?教师备课自动化尝试
  • 2025年12月豆神教育深度评测:名校师资与AI大语文的完美结合 - 品牌测评鉴赏家
  • LobeChat能否实现用户权限分级?管理员角色设计思路
  • EI会议推荐!2026年区块链技术与基础模型国际学术会议(BTFM 2026)
  • 2025年起名老师联系方式汇总:全国资深专家联系通道与专业起名服务 - 品牌推荐
  • Qwen3-32B如何突破小语种翻译瓶颈?
  • 架构师基操之如何画出好的架构图?【转】
  • 2025年低泡润湿分散剂供货厂家权威推荐榜单:润湿分散剂/抑泡润湿分散剂/环保润湿剂源头厂家精选 - 品牌推荐官
  • 2025年专业起名老师联系方式汇总:全国资深专家联系通道与科学咨询指引 - 品牌推荐
  • 一次生产环境 Tomcat 7 + JDK 7 应用启动失败的完整排查与修复实录 - 指南
  • LobeChat本地安装详细教程
  • 2025年年终柳州管道疏通推荐:综合排名比较与真实用户评测报告 - 十大品牌推荐
  • 2025年起名老师联系方式汇总:全国资深专家联系通道与专业起名服务指引 - 品牌推荐
  • 2025广东最新AI搜索/GEO/AI营销服务推荐!东莞等企业智能转型优选方案发布,技术赋能驱动数字化升级 - 全局中转站
  • 2025年公司取名公司联系方式汇总: 全国主要服务机构官方联系方式及专业合作指引 - 品牌推荐
  • Jenkins备份及回滚方式
  • 2025年年终合肥管道疏通推荐:权威榜单TOP5及用户真实评价汇总 - 品牌推荐
  • 家用制氧机选哪个好?老人用、术后用、高原用制氧机真实评测与选购指南 - 速递信息
  • 2025年年终柳州管道疏通推荐:专业排行解析与多维度服务对比指南 - 十大品牌推荐
  • 详细介绍:3D空间表征基础