VB中的“Financial.Pmt”等同于C#?

时间:2010-06-29 18:25:37

标签: c# .net asp.net vb.net .net-3.5

Microsoft.VisualBasic程序集中有一个内置函数。我可以在VB中使用它:

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

我目前的项目是在C#中,我需要使用此功能。网上的答案说只是添加命名空间和程序集并在C#中使用相同的 - 但这不是真的! C#仍然无法识别此公式。

那么如何在C#中使用Financial.Pmt(或者甚至可能将源代码移植到它)?谢谢你的帮助。

4 个答案:

答案 0 :(得分:11)

像这样:

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();
        }
    }
}
  • Joel says一样,添加对Microsoft.VisualBasic程序集的引用。
  • 就像Rup在评论中所说,你必须提供第4和第5个参数的默认值。

Do use Microsoft.VisualBasic from C# when appropriate。它是.Net中一个完全支持的核心库,它包含一些有用的财务功能。

答案 1 :(得分:1)

您必须在Visual Studio中为项目添加对Microsoft.VisualBasic.dll程序集的引用。这与 与源文件顶部的using Microsoft.VisualBasic;指令相同。你必须同时做这两个步骤。

答案 2 :(得分:1)

如前所述,您可以使用Microsoft.VisualBasic程序集,它提供了大量的VB6功能。但说实话,如果你更关注财务计算,你应该考虑Excel Financial functions for .NET

答案 3 :(得分:1)

对于那些不喜欢导入VB函数的人。这是PMT的纯C#代码

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