【问题标题】:How is present value (PV) calculated on Google Sheets?如何在 Google 表格上计算现值 (PV)?
【发布时间】:2016-04-21 00:42:33
【问题描述】:

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

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

【问题讨论】:

    标签: javascript excel math google-sheets excel-formula


    【解决方案1】:

    咨询Wikipedia后,我想出了这个函数,它返回与内置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);
      }
    }
    

    优化和现代化:

    /**
     * @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);
    }
    

    【讨论】:

    • 这对我来说很好,可以匹配 Excel 对 PV() 所做的工作。有轻微的四舍五入变化,但这可能是我们的数据。
    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多