コード例 #1
0
        public NpvResultModel Npv(NpvDataModel model)
        {
            if (model.InitialInvestment != 0)
            {
                model.CashFlows.Insert(0, -model.InitialInvestment);
                model.InitialInvestment = 0;
            }

            var npv = model.CashFlows.Select((c, n) => c / Math.Pow(1 + (model.DiscountRate / 100), n)).Sum();

            return(new NpvResultModel
            {
                DiscountRate = model.DiscountRate,
                NetPresentValue = Math.Round(npv, 2)
            });
        }
コード例 #2
0
        public void Npv()
        {
            // Arrange
            var helper = new ComputeService();
            var model  = new NpvDataModel()
            {
                InitialInvestment = 150000,
                CashFlows         = new List <double> {
                    50000, 25000
                },
                DiscountRate = 1.2
            };

            // Act
            var result = helper.Npv(model);

            // Assert
            Assert.IsTrue(result is NpvResultModel);
            Assert.AreEqual(1.2, result.DiscountRate);
            Assert.AreEqual(-76182.26, result.NetPresentValue);
        }
コード例 #3
0
 public IHttpActionResult Post([FromBody] NpvDataModel model)
 {
     return(Ok(_computeSevice.Npv(model)));
 }