2016-10-11 2 views
0

Je suis relativement nouveau en programmation et je ne peux pas calculer correctement une fonction. C'est une calculatrice d'intérêt composé qui utilise cette formule:Problème avec le calcul en fonction

I = P (1 + i) n - P (p = principal i = intérêt n = années) Taux: = à la valeur d'intérêt.

Sur pascals ma fonction ressemble à ceci,

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; 

Il compile bien mais juste revenir wont la bonne valeur. Par exemple 1000 principal, 15% d'intérêt sur 3 ans renvoie: 1.52087500000000E + 000.

Je suppose que je fais quelque chose de mal dans la formule?

Merci pour votre aide à l'avance.

Répondre

1

En pascal, une fonction renvoie le nom défini dans la fonction. Par exemple:

function set_one(): integer; 

begin 
    set_one := 1 
end; 

Dans votre fonction, vous devez remplacer

result := interest; 

avec

Compoundinterest := interest; 

ou pour montrer à la fin (avec quelques modifications):

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; 

Cependant, cela suppose que vous avez acce ss à la fonction power. Pour accéder à la fonction power, le programme doit avoir: uses math écrit sous l'en-tête du programme. Ce code a été testé sur compilateur sur Free Pascal Compiler version 2.6.4.

Pour plus d'informations sur Pascal, voir: https://www.tutorialspoint.com/pascal/pascal_functions.htm

Pour un terminal en ligne Pascal, voir: https://www.tutorialspoint.com/compile_pascal_online.php

0

J'ai testé ici avec Free Pascal 3.0.0 et il fonctionne (5,20875 j'ai ajouté

.
{$mode delphi} 
uses math; 

avant votre code et

begin 
writeln(compoundinterest(1000,3,15)); 
end. 

après. Vérifiez que vous le faites aussi, ou expliquez-en plus sur le système pascal que vous utilisez.

Si cela est seulement une première étape dans un calcul, vous pourriez également être intéressé par le math unit financial functions

0

Vous devez définir le format des décimales en utilisant :0:2

Essayez cette

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; 
+0

Merci tas c'est exactement ce dont j'avais besoin :) – Roe

+1

Ouais ........... –