JavaScript中保留小数点后N位方法总结
作者:时倾
这篇文章主要为大家详细介绍了JavaScript中保留小数点后N位的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
四舍五入保留小数后 n 位
补0: 使用 toFixed(digits) 方法
- 四舍五入为指定的小数位数
- 返回字符串
- 小数实际位数不够指定的位数,不足的部分会补 0
(1).toFixed(2) // '1.00' (1.2).toFixed(2) // '1.20' (-2).toFixed(2) // '-2.00' (1.12345678).toFixed(7) // '1.1234568'
劣势
- 参数必须是 0 ~ 20 之间的值,包括 0 和 20。参数 < 0 报错。
- 会出现数字精度问题。详见ECMAScript 中的 toFixed 定义。
(1111111111.1234567891234).toFixed(8) // '1111111111.12345672'
不补0:自定义转换方法
- 四舍五入为指定的小数位数
- 返回数字
- 小数实际位数不够指定的位数,不足的部分不会补 0
function roundFun(number, precision) { return Math.round(+number + 'e' + precision) / Math.pow(10, precision); } // 或 function roundFun(number, precision) { return Math.round(number * Math.pow(10, precision)) / Math.pow(10, precision); }
roundFun(1, 2) // 1 roundFun(1.2, 2) // 1.2 roundFun(-2, 2) // -2 roundFun(1.12345678, 7) // 1.1234568 roundFun(1111111111.1234567891234, 8) // 1111111111.1234567
精确显示小数后 n 位
不补0
- 精确保留小数后 n 位
- 返回数字
- 小数实际位数不够指定的位数,不足的部分不会补 0
const keepDecimal = (numStr, precision) => { const regexp = new RegExp(`^\\d+(?:\\.\\d{0,${precision}})?`) const result = numStr.match(regexp) return result ? result[0] : '0' }
keepDecimal('1', 2) // '1' keepDecimal('1.2', 2) // '1.2' keepDecimal('1.12345678', 7) // '1.1234567' keepDecimal('12345.1234567891234', 8) // '12345.12345678' keepDecimal('123456789.1234567891234', 10) // '123456789.1234567891'
劣势
- 不支持负数
- 不支持字符串
keepDecimal('-2', 2) // '0' keepDecimal('122sss', 10) // '122' keepDecimal('abcd', 10) // '0'
补0
- 精确保留小数后 n 位
- 返回字符串
- 小数实际位数不够指定的位数,不足的部分会补 0
const keepDecimal = (numStr, precision) => { const regexp = new RegExp(`^\\d+(?:\\.\\d{0,${precision}})?`) const result = numStr.match(regexp) return result ? result[0] : '0' } const keepDecimalPlaces = (numStr, precision) => { let numberStr = keepDecimal(numStr, precision) let rs = numberStr.indexOf('.') if (rs < 0 && precision > 0) { rs = numberStr.length numberStr += '.' } while (numberStr.length <= rs + precision) { numberStr += '0' } return numberStr }
keepDecimalPlaces('1', 2) // '1.00' keepDecimalPlaces('1.2', 2) // '1.20' keepDecimalPlaces('1.12345678', 7) // '1.1234567' keepDecimalPlaces('12345.1234567891234', 8) // '12345.12345678' keepDecimalPlaces('123456789.1234567891234', 10) // '123456789.1234567891' keepDecimalPlaces('123456789.000001', 10) // '123456789.0000010000'
劣势
- 不支持负数
- 不支持字符串
keepDecimalPlaces('-2', 2) // '0.00' keepDecimalPlaces('122sss', 10) // '122.0000000000' keepDecimalPlaces('abcd', 10) // '0.0000000000'
到此这篇关于JavaScript中保留小数点后N位方法总结的文章就介绍到这了,更多相关JavaScript保留小数点内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!