2021-12-15 12:43:51 +03:00

54 lines
1.1 KiB
C#

using System;
using System.Linq;
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Common;
namespace EvoCalculator.Core.Base.Columns;
public class BaseColumnWithXIRR : BaseColumn<decimal>
{
protected BaseColumnWithXIRR(int count, BaseColumn<DateTime> dateTempColumn) : base(count)
{
Dates = dateTempColumn.Values;
}
protected BaseColumnWithXIRR(int count) : base(count)
{
}
protected BaseColumnWithXIRR()
{
}
public DateTime[] Dates { get; set; }
private Flow[] Flows
{
get
{
var flows = new Flow[Values.Length];
for (var i = 0; i < Values.Length; i++)
flows[i] = new Flow
{
Date = Dates[i],
Value = Values[i]
};
return flows;
}
}
public double IRR
{
get
{
var XIRR = new XIRR(Flows);
return XIRR.GetResult();
}
}
public void RoundValues(int precision = 2)
{
Values = Values.Select(x => Math.Round(x, precision)).ToArray();
}
}