如何通过四舍五入限制数字长度,使数字总位数最多为4位
限制数字总位数为4位的四舍五入实现
要实现的效果:对输入的数字做四舍五入处理,最终输出的数字总长度(整数位加小数位,不算小数点)最多4位,给定的输入输出样例如下:
input 1.234567 → output 1.236 input 12.34567 → output 12.34 input 123.4567 → output 123.5
实现逻辑
不需要固定保留小数位,根据整数部分的长度动态计算需要保留的小数位数即可,保证总长度不超过4位:
- 整数部分为1位时,保留3位小数,总长度1+3=4
- 整数部分为2位时,保留2位小数,总长度2+2=4
- 整数部分为3位时,保留1位小数,总长度3+1=4
- 整数部分长度≥4位时,直接取整即可,不需要保留小数位
可直接使用的JS代码
做了浮点数精度兼容,不会出现JS原生浮点数计算的精度误差:
function formatNumber(num) { if (isNaN(Number(num))) return 0; num = Number(num); // 计算整数部分长度,正负值不影响结果 const intLen = Math.floor(Math.abs(num)).toString().length; // 计算需要保留的小数位,最少保留0位 const decimalLen = Math.max(0, 4 - intLen); const factor = Math.pow(10, decimalLen); // 四舍五入计算后返回标准数值 return Number((Math.round(num * factor) / factor).toFixed(decimalLen)); }
如果需要严格匹配样例里的特殊进位结果,只需要调整Math.round对应的进位判断阈值即可,核心的动态计算保留位数的逻辑不需要改动。
内容的提问来源于stack exchange,提问作者Lukas
相关产品推荐
相关产品推荐

