ВБ " финансовый.Эквивалент Pmt" в C#?



Есть встроенная функция от Microsoft.Визуальная базовая сборка. Я могу использовать его в VB следующим образом:

Financial.Pmt((dAPR / 100) / 12, iNumberOfPayments, dLoanAmount) * -1

Мой текущий проект находится в C#, и мне нужно использовать эту функцию. Ответы в интернете говорят, что просто добавьте пространство имен и сборку и используйте то же самое в C#- но это не так! C# все еще не распознает эту формулу.

Итак, как я могу использовать use Financial.Pmt в C# (или, возможно, даже перенос исходного кода на него)? Спасибо за любую помощь.

122   4  

4 ответов:

Вот так:

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();
        }
    }
}
  • Как говорит Джоэл, добавьте ссылку на Microsoft.Визуальная базовая сборка.
  • Как говорит Rup в комментарии, вы должны предоставить значения по умолчанию для 4-го и 5-го аргументов.

Используйте Microsoft.VisualBasic из C#, когда это уместно . Это полностью поддерживаемая библиотека ядра в .Net, и она содержит некоторые полезные финансовые функции.

Необходимо добавить ссылку на Microsoft.Визуальная основа.сборка dll для вашего проекта в Visual Studio. Это не то же самое, что директива using Microsoft.VisualBasic; в верхней части исходного файла. Вы должны сделать оба шага.

Как уже было сказано, Вы можете использовать Microsoft.VisualBasic сборка, которая обеспечивает множество функций VB6. Но, честно говоря, если вы смотрите на финансовые вычисления в более общем плане, вам следует рассмотреть возможность просмотра финансовых функций Excel для .NET .

Для тех, кто не любит импортировать функции VB. Вот чистый код C# для 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;
}

Использование:

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
    Ничего не найдено.

Добавить ответ:
Отменить.