There is a built in function from the Microsoft.VisualBasic assembly. I can use it in VB like this:
Financial.Pmt((dAPR / 100) / 12, iNumberOfPayments, dLoan
For those who don't like to import VB functions. Here's pure C# code for PMT
public static double PMT(double yearlyInterestRate, int totalNumberOfMonths, double loanAmount)
{
var rate = (double) yearlyInterestRate / 100 / 12;
var denominator = Math.Pow((1 + rate), totalNumberOfMonths) - 1;
return (rate + (rate/denominator)) * loanAmount;
}
Usage:
PMT(7, 360, 120000);
// Result: 798.36
PMT(4.5, 360, 137500.47);
// Result: 696.69
PMT(4.13, 360, 61520);
// Result: 298.33
PMT(6.38, 360, 89200);
// Result: 556.78
Like this:
using System;
using Microsoft.VisualBasic;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double dAPR = 2;
Int32 iNumberOfPayments = 12;
double dLoanAmount = 10000;
Console.WriteLine(Financial.Pmt((dAPR / 100) / 12, iNumberOfPayments, dLoanAmount, 0, DueDate.EndOfPeriod) * -1);
Console.ReadLine();
}
}
}
Do use Microsoft.VisualBasic from C# when appropriate. It's a fully supported core library in .Net and it contains some useful financial functions.
As already stated you can use the Microsoft.VisualBasic assembly which provides plenty of the VB6 functionality. But to be honest if you are looking more generally at financial calculations you should consider looking at Excel Financial Functions for .NET.
Update: The library can be installed via NuGet
PM> Install-Package ExcelFinancialFunctions
You must add a reference to the Microsoft.VisualBasic.dll assembly for your project in Visual Studio. This is not the same thing as the using Microsoft.VisualBasic;
directive at the top your source file. You must do both steps.