当前位置: 首页> 文旅> 文化 > 超大数字四舍五入保留N位小数【没bug】

超大数字四舍五入保留N位小数【没bug】

时间:2025/7/12 14:01:10来源:https://blog.csdn.net/weixin_44903107/article/details/140614378 浏览次数:0次

大部分npm常用的插件四舍五入都是用数值直接去计算四舍五入的存在精度问题,本方法是用用字符串拆分比较整数大小,这样就避开了精度的问题;

该方法可以传入:1.134、99.99、9999999999999999999.99999、.001、12.、0.、00.、类似的奇葩字符都会自动处理补全

代码如下:

function setRound(v, n) {if(isNaN(v)) return 'NaN';const values = v.split(".");function get0(lastV){// 补0函数var s0 = lastV + '0000000000000000000000'return s0.substring(0, n)}let integerStr = values[0];let decimalStr2 = values[1].substring(0, n)let decimalStr = values[1].substring(0, n+1);const lastN = Number(decimalStr.slice(-1));if(!values[1]) return integerStr + "." + get0(decimalStr2);if(decimalStr && decimalStr.length > n){ // 小数位超过n位数if(lastN >= 5){decimalStr2 = decimalStr2 - 0 + 1 // 五入if(decimalStr2.toString().length > n){ // 如果小数位超过n+1位数decimalStr2 = get0('0')integerStr = Number(integerStr) + 1}}}integerStr = Number(integerStr) // 规范00.134、.134这种整数位return integerStr + "." + get0(decimalStr2)
}

关键字:超大数字四舍五入保留N位小数【没bug】

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: