VB “Financial.Pmt” equivalent in C#?

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, dLoanAmount) * -1

My current project is in C# and I need to use this function. Answers on the web say just add the namespace and assembly and use the same in C#- but this is not true! C# still does not recognize this formula.

So how can I use use Financial.Pmt in C# (or perhaps even porting the source code to it)? Thanks for any help.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

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();
        }
    }
}
  • Like Joel says, add a reference to the Microsoft.VisualBasic assembly.
  • Like Rup says in a comment, you have to provide the defaults to the 4th and 5th arguments.

Do use Microsoft.VisualBasic from C# when appropriate. It’s a fully supported core library in .Net and it contains some useful financial functions.

Method 2

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

Method 3

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

Method 4

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.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x