26 lines
683 B
C#
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));
|
|
}
|
|
}
|
|
} |