Google 表格中的现值 (PV) 是如何计算的?

cbr*_*awl 3 javascript math excel excel-formula google-sheets

Google Sheets 上的 PV 公式可以采用 3、4 或 5 个参数。我正在尝试计算 JavaScript 中给定参数的现值,但似乎无法弄清楚或找到 Google Sheets 使用的公式。

当前传递给函数的参数是=PV(.00115, 7.57, $66.88)$503.89,函数的输出是 $503.89。这是如何计算的?我需要在 JavaScript 中复制这个公式,或者找到某种类型的库,其中的函数可以为我执行此操作。

小智 5

在查阅维基百科后,我想出了这个函数,它向内置PV. 通过将其作为自定义函数输入并向其抛出一些随机值进行测试。

function myPV(rate, num, amount, remain, type) {
  if (type == 0) {
    var factor = (rate == 0 ? num : (1 - Math.pow(1+rate, -num))/rate);
    return -amount*factor - remain * Math.pow(1+rate, -num);
  }
  else {
    var factor = (rate == 0 ? num : (1 - Math.pow(1+rate, -num))*(1+rate)/rate);
    return -amount*factor - remain * Math.pow(1+rate, -num);
  }
}
Run Code Online (Sandbox Code Playgroud)

优化和现代化:

/**
 * @param {number} rate - interest rate
 * @param {number} num - number of payments
 * @param {number} amount - payment amount
 * @param {number} remain - final value
 * @param {number} type - 0 for end-of-period payments, 1 for start-of-period payments
*/
function myPV(rate, num, amount, remain, type) {
  let factor;

  if (type == 0) {
    factor = (rate == 0 ? num : (1 - Math.pow(1+rate, -num))/rate);
  } else {
    factor = (rate == 0 ? num : (1 - Math.pow(1+rate, -num))*(1+rate)/rate);
  }

  return -amount*factor - remain * Math.pow(1+rate, -num);
}
Run Code Online (Sandbox Code Playgroud)