前端js中的算数精确运算加,减,乘,除,数组求和,日期计算整理

乘法

  const mul = function(a, b) {
  let c = 0
  const d = a.toString()
  const e = b.toString()
  try {
    c += d.split('.')[1].length
  } catch (f) { console.log() }
  try {
    c += e.split('.')[1].length
  } catch (f) { console.log() }
  return Number(d.replace('.', '')) * Number(e.replace('.', '')) / Math.pow(10, c)
}

加法

const add = function(a, b) {
  let c = 0
  let d = 0
  let e = 0
  try {
    c = a.toString().split('.')[1].length
  } catch (f) {
    c = 0
  }
  try {
    d = b.toString().split('.')[1].length
  } catch (f) {
    d = 0
  }
  e = Math.pow(10, Math.max(c, d))
  return (mul(a, e) + mul(b, e)) / e
}

减法

const sub = function(a, b) {
  let c = 0
  let d = 0
  let e = 0
  try {
    c = a.toString().split('.')[1].length
  } catch (f) {
    c = 0
  }
  try {
    d = b.toString().split('.')[1].length
  } catch (f) {
    d = 0
  }
  e = Math.pow(10, Math.max(c, d))
  return (mul(a, e) - mul(b, e)) / e
}

除法

const div = function(a, b) {
  let c = 0
  let d = 0
  let e = 0
  let f = 0
  try {
    e = a.toString().split('.')[1].length
  } catch (g) { console.log() }
  try {
    f = b.toString().split('.')[1].length
  } catch (g) { console.log() }
  c = Number(a.toString().replace('.', ''))
  d = Number(b.toString().replace('.', ''))
  return mul(c / d, Math.pow(10, f - e))
}

注:由于算数运算中的加,减,除都是以乘法运算为基础进行的数学运算,所以在用到除乘法外的其他数学运算的时候,乘法必须给带上

数组求和

// 方法1
const sum = function(arr) {
  var len = arr.length
  if (len === 0) {
    return 0
  } else if (len === 1) {
    return arr[0]
  } else {
    return arr[0] + sum(arr.slice(1))
  }
}
// 方法2
const sum = function(arr){
  arr.reduce((p, v, i , a) => {
    return p + v
})

日期计算(获取X天后的日期)

const GetDateStr = function(AddDayCount) {
  var dd = new Date()
  dd.setDate(dd.getDate() + AddDayCount)// 获取AddDayCount天后的日期
  var y = dd.getFullYear()
  var m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1)// 获取当前月份的日期,不足10补0
  var d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate()// 获取当前几号,不足10补0
  return y + '-' + m + '-' + d
}

你可能感兴趣的:(前端js中的算数精确运算加,减,乘,除,数组求和,日期计算整理)