当前位置:   article > 正文

NPV函数

npv c#

c#版NPV函数

  1. static void Main(string[] args)
  2. {
  3. double[] flow = new double[] { 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45 };
  4. //方法1
  5. var vb_npv = Microsoft.VisualBasic.Financial.NPV(0.02, ref flow);
  6. Console.WriteLine(vb_npv);
  7. //方法2
  8. Console.WriteLine(GetNPV(0.02,flow));
  9. Console.ReadKey();
  10. }
  11. public static double GetNPV(double dcRate, double[] values)
  12. {
  13. double counter = 0;
  14. return values.Sum(value => value / Math.Pow(1 + dcRate, ++counter));
  15. }

  SqlServer版NPV函数:

  1. DECLARE @rate DECIMAL(30, 10) ,
  2. @strIDs VARCHAR(8000);
  3. SET @strIDs = '565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 565.43, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47, 635.47,635.47, 635.47, 635.47, 635.47, 635.47, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 707.61, 781.92, 781.92,781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 781.92, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45, 858.45,858.45, 858.45, 858.45';
  4. SET @rate = 0.0200000000;
  5. DECLARE @t_IDs TABLE
  6. (
  7. id INT IDENTITY(1, 1) ,
  8. value DECIMAL(30, 10)
  9. );
  10. DECLARE @strID VARCHAR(12) ,
  11. @sepPos INT;
  12. SET @strIDs = COALESCE(@strIDs + ',', '');
  13. SET @sepPos = CHARINDEX(',', @strIDs);
  14. WHILE @sepPos > 0
  15. BEGIN
  16. SET @strID = LEFT(@strIDs, @sepPos - 1);
  17. INSERT INTO @t_IDs
  18. ( value
  19. )
  20. SELECT ( CAST(@strID AS DECIMAL(30, 10)) )
  21. WHERE ISNUMERIC(@strID) = 1;
  22. SET @strIDs = RIGHT(@strIDs, DATALENGTH(@strIDs) - @sepPos);
  23. SET @sepPos = CHARINDEX(',', @strIDs);
  24. END;
  25. SELECT SUM(value / POWER(1 + @rate, id))
  26. FROM @t_IDs;

  

转载于:https://www.cnblogs.com/yuking/p/10168839.html

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号