zoukankan      html  css  js  c++  java
  • NPV函数

    c#版NPV函数

     static void Main(string[] args)
            {
                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 };
                //方法1
                var vb_npv = Microsoft.VisualBasic.Financial.NPV(0.02, ref flow);
                Console.WriteLine(vb_npv);
                //方法2
                Console.WriteLine(GetNPV(0.02,flow));
              
                Console.ReadKey();
            }
            public static double GetNPV(double dcRate, double[] values)
            {
                double counter = 0;
                return values.Sum(value => value / Math.Pow(1 + dcRate, ++counter));
            }
    

      SqlServer版NPV函数:

     DECLARE @rate DECIMAL(30, 10) ,
        @strIDs VARCHAR(8000);
     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';
     SET @rate = 0.0200000000;
     DECLARE @t_IDs TABLE
        (
          id INT IDENTITY(1, 1) ,
          value DECIMAL(30, 10)
        );
     DECLARE @strID VARCHAR(12) ,
        @sepPos INT;
     SET @strIDs = COALESCE(@strIDs + ',', '');
     SET @sepPos = CHARINDEX(',', @strIDs);
     WHILE @sepPos > 0
        BEGIN
            SET @strID = LEFT(@strIDs, @sepPos - 1);
          
            INSERT  INTO @t_IDs
                    ( value
                    )
                    SELECT  ( CAST(@strID AS DECIMAL(30, 10)) )
                    WHERE   ISNUMERIC(@strID) = 1;
            SET @strIDs = RIGHT(@strIDs, DATALENGTH(@strIDs) - @sepPos);
            SET @sepPos = CHARINDEX(',', @strIDs);
        END;
     SELECT SUM(value / POWER(1 + @rate, id))
     FROM   @t_IDs; 
     
    

      

  • 相关阅读:
    EF之Model First
    easyui报错 Cannot read property 'length' of null
    EF迁移报错An operation was scaffolded that may result in the loss of data. Please review the migration for accuracy.
    Vue脚手架搭建
    [LeetCode No.20] 有效的括号
    爬虫-给女朋友的每日天气预报
    [LeetCode No.316] 去除重复字母
    [LeetCode No.738] 单调递增的数字
    [LeetCode No.49] 字母异味词分组
    [LeetCode No.34] 在排序数组中查找元素的第一个和最后一个位置
  • 原文地址:https://www.cnblogs.com/yuking/p/10168839.html
Copyright © 2011-2022 走看看