2020-10-16 16:40:54 +03:00

26 lines
683 B
C#

using System;
using System.Linq;
using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.FinanceFormulas
{
public class XNPV : IFinanceFormula<double>
{
private readonly Flow[] _flows;
private readonly double _rate;
public XNPV(Flow[] flows, double rate)
{
_flows = flows;
_rate = rate;
}
public double GetResult()
{
var firstDate = _flows[0].Date;
return _flows.Sum(flow =>
flow.Value / Math.Pow(1 + _rate, (flow.Date - firstDate).TotalDays / 365));
}
}
}