NPV函数

Stella981
• 阅读 301

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;
点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
2个月前
css问题
1、 在IOS中图片不显示(给图片加了圆角或者img没有父级) <div<img src""/</div div {width: 20px; height: 20px; borderradius: 20px; overflow: h
晴空闲云 晴空闲云
2个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。 盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
1个月前
快速入门|使用MemFire Cloud构建React Native应用程序
> MemFire Cloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
java中使用redis
1.java代码 public class RedisTest01 { public static void main(String[] args) { // connect redis server Jedis redis = new Jedis("127.0.0
Wesley13 Wesley13
1年前
java8 List集合的排序,求和,取最大值,按照条件过滤
`public` `class` `Java8Test {` `public`  `static`  `void`  `main(String[] args) {` `Person p1 = ` `new`  `Person(` `"麻子"` `, ` `31` `);` `Person p2 = ` `new`  `Person(` `"
Stella981 Stella981
1年前
AtomicInteger 使用示例
public class VolatileTest { static AtomicInteger data = new AtomicInteger(); public static void main(String[] args) { int num = 10;
Stella981 Stella981
1年前
C#中有关数组和string引用类型或值类型的判断
直接来一段测试代码 class value_ref_type { public static void DEMO1() { double[] location = new double[2] { 1.256589, 489789 };
Wesley13 Wesley13
1年前
java8 str.intern() 测试
package io.openmessaging.storage.dledger; public class T { public static void main(String[] args) { /* * String str = new String("a"); //产生常量a
Wesley13 Wesley13
1年前
iOS 常用数学函数
Math.h是c的函数库 1、 三角函数  double sin (double);正弦  double cos (double);余弦  double tan (double);正切 2 、反三角函数 double asin (double); 结果介于\[-PI/2, PI/2\]  double acos (doub
Wesley13 Wesley13
1年前
java8 stream 用法收集
public class Test1 { public static void main(String[] args) { List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9));
helloworld_28799839 helloworld_28799839
2个月前
常用知识整理
# Javascript ## 判断对象是否为空 ```js Object.keys(myObject).length === 0 ``` ## 经常使用的三元运算 > 我们经常遇到处理表格列状态字段如 `status` 的时候可以用到 ``` vue