VB中的“Financial.Pmt”等同于C#?
Microsoft.VisualBasic程序集中有一个内置函数。 我可以在VB中使用它,如下所示:
Financial.Pmt((dAPR / 100) / 12, iNumberOfPayments, dLoanAmount) * -1
我目前的项目是C#,我需要使用这个function。 网上的答案说只是添加命名空间和程序集并在C#中使用相同的 – 但这不是真的! C#仍然无法识别此公式。
那么如何在C#中使用Financial.Pmt(或者甚至可能将源代码移植到它)? 谢谢你的帮助。
像这样:
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所说 ,添加对Microsoft.VisualBasic程序集的引用。
- 就像Rup在评论中所说,你必须提供第4和第5个参数的默认值。
在适当的时候使用C#中的Microsoft.VisualBasic 。 它是.Net中完全支持的核心库,它包含一些有用的财务function。
您必须在Visual Studio中为项目添加对Microsoft.VisualBasic.dll程序集的引用。 这与using Microsoft.VisualBasic;
源文件顶部的指令。 你必须做两个步骤。
如前所述,您可以使用Microsoft.VisualBasic程序集,它提供了大量的VB6function。 但说实话,如果你更普遍地考虑财务计算,你应该考虑查看.NET的Excel财务function 。
对于那些不喜欢导入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