news 2026/6/11 9:23:21

js、ts保留两位或n位小数,包括四舍五入 以及 不进位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
js、ts保留两位或n位小数,包括四舍五入 以及 不进位

javascript、typescript 保留两位或n位小数,包括四舍五入 和 不四舍五入进位


四舍五入
1. toFixed(n)

一般保留小数基本会先想到用toFixed(x),x区间[0,20],但会四舍五入,返回的是字符串

letnum=3.141592653;letn=num.toFixed(3);// "3.142"
2. toPrecision(n)

toPrecision(x),x区间[0,21],和上面的方法一样,但是会包括整数位,所以区间+1

letnum=3.141592653;letn=num.toPrecision(4);// "3.142"
3. Math.round

直接取整,配合乘除保留任意位。

letnum=3.141592653;letn=Math.round(num*1000)/1000;// 3.142

逼逼这么多,你是不是想找不进位的方法,它来了

4. 作为额外思路,你当个玩具多取一位然后再截取就完事,如果一直进位那你就自行扩展到要截的那位即可
letnum=3.141592653;letn=num.toFixed(3).slice(0,-1);// "3.14"// 评论区已经举了反例:1.999.toFixed(3) → "2.000" → slice(0,-1) → "2.00"(错误,应该是 "1.99")//之前没写完就没登上来看,没及时看到反馈(找借口),我的问题//你可以先转string然后再截,但应该也有点问题,不纠结,用下面的
5. Math.floor
letnum=3.141592653;letlen=2;letp=Math.pow(10,len);// num(3.141592653)取2位: 3.14// num(3.9999)取2位 : 3.99letn=Math.floor(num*p+1e-12)/p;// 1e-12 防浮点误差,银行家算法精度问题,为什么是这个值,可以拉到最后

直接复制去用

/** 保留 len 位小数,round=true 四舍五入,false 截断 */publicfixedNum(num:number,len:number,round:boolean=true):number{letp=Math.pow(10,len);letv=num*p+1e-12;return(round?Math.round(v):Math.floor(v))/p;}

1e-12 是怎么来的(摘抄)

JS 浮点是 IEEE 754 双精度,53 位尾数 ≈ 15~17 位十进制有效位。

num * p的误差量级 ≈|num * p| × Number.EPSILON(EPSILON ≈ 2.22e-16)。

例:3.14 * 100 = 313.99999999999994 误差 ≈ 314 × 2.22e-16 ≈ 7e-14 1e-12 ≈ 0.000000000001 7e-14 ≈ 0.00000000000007 //比补偿值小两个量级 1e-12 >> 7e-14 //够盖住误差

选值区间:

  • 上限:<1 / 10^digits(超过会改变计算结果)
  • 下限:>|num * p| × Number.EPSILON(小于这个补不动)

1e-12 是通用值,想精可以用|num * p| * Number.EPSILON * 10

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 9:23:19

基于平方根比例控制的压电微定位平台 XY 双轴步进驱动Matlab仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f3…

作者头像 李华
网站建设 2026/6/11 9:23:11

PROPER框架:个性化大语言模型的渐进式学习技术解析

1. PROPER框架技术解析:个性化大语言模型的渐进式学习革命在自然语言处理领域,个性化大语言模型(Personalized LLM)正经历从"千人一面"到"千人千面"的范式转变。传统微调方法往往面临两个困境:要么…

作者头像 李华
网站建设 2026/6/11 9:22:57

APFNet模型训练全流程解析:从属性分支调优到Transformer融合实战

APFNet模型训练全流程解析:从属性分支调优到Transformer融合实战在目标跟踪领域,多模态数据融合正成为突破性能瓶颈的关键路径。APFNet(Attribute-based Progressive Fusion Network)通过创新性地引入属性分支训练和渐进式融合机制…

作者头像 李华
网站建设 2026/6/11 9:22:55

从振荡到稳定:PID参数工程整定实战心法

1. 从振荡现象看PID参数整定的核心挑战 第一次接触PID参数整定时,我盯着屏幕上那条疯狂抖动的曲线整整发呆了半小时。那是我负责的一个工业烤箱温控项目,设定温度200℃,实际温度却在190℃到210℃之间像过山车一样来回摆动。这种典型的振荡现象…

作者头像 李华