我对编程很新,我无法正确计算函数。它是一个使用此公式的复利计算器:
I = P(1 + i)n - P(p =委托人i =利息n =年)利率:=利息价值。
在pascal上我的功能看起来像这样,
function Compoundinterest(principal, years: integer; rate: double): double;
var
divrate: double;
interest: Double;
begin
divrate := rate/100;
interest := principal * power(1 + divrate, years) - Principal;
result := interest;
end;
它编译得很好但是不会返回正确的值。
例如1000本金,3年内15%的利息返还:1.52087500000000E + 000。
我认为我在公式中做错了什么?
提前感谢您的帮助。
答案 0 :(得分:1)
在pascal中,函数返回它在函数中设置的名称。例如:
function set_one(): integer;
begin
set_one := 1
end;
在你的功能中,你应该替换
result := interest;
与
Compoundinterest := interest;
或完成时显示(稍作修改):
function compound_interest(principal, years: integer; rate: double): double;
var
divrate: double;
begin
divrate := rate / 100.0;
compound_interest := principal * power(1 + divrate, years) - principal;
end;
但是,这假设您可以访问power
功能。为了访问power
函数,程序必须在程序头下写入:uses math
。此代码在Free Pascal Compiler 2.6.4版的编译上进行了测试。
有关Pascal的更多信息,请参阅:https://www.tutorialspoint.com/pascal/pascal_functions.htm
对于在线Pascal终端,请参阅: https://www.tutorialspoint.com/compile_pascal_online.php
答案 1 :(得分:0)
我在这里测试了Free Pascal 3.0.0并且它可以工作(5.20875。我添加了
{$mode delphi}
uses math;
在您的代码和
之前begin
writeln(compoundinterest(1000,3,15));
end.
后。验证您是否也这样做,或者解释更多关于您使用的pascal系统的信息。
如果这只是某些计算的第一步,您可能也会对math unit financial functions
感兴趣答案 2 :(得分:0)
您必须使用十进制格式设置
:0:2
试试这个
result := interest:0:2;
Counting the number of decimal places in pascal
var
divrate: double;
interest: Double;
begin
divrate := rate/100;
interest := principal * power(1 + divrate, years) - Principal;
result := interest:0:2;
end;