javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > JavaScript保留小数点

JavaScript中保留小数点后N位方法总结

作者:时倾

这篇文章主要为大家详细介绍了JavaScript中保留小数点后N位的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下

四舍五入保留小数后 n 位

补0: 使用 toFixed(digits) 方法

(1).toFixed(2) // '1.00'
(1.2).toFixed(2) // '1.20'
(-2).toFixed(2) // '-2.00'
(1.12345678).toFixed(7) // '1.1234568'

劣势

(1111111111.1234567891234).toFixed(8) // '1111111111.12345672'

不补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

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

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保留小数点内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文