Fonction php, problème si $investment > $flow

Résolu/Fermé
debutantephp - Modifié par jordane45 le 9/02/2016 à 14:56
 debutantephp - 9 févr. 2016 à 15:08
Bonjour,

Voilà j'ai cette fonction de calcul du TRI (taux de rendement interne) en PHP.

Mon problème est que la fonction fonctionne bien lorsque $investment < somme de $flow, en revanche si $investment est supérieur, alors la fonction me retourne "0".

Le problème ne doit pas être bien compliqué à trouver, mais je ne le trouve pas.

$investment = 100000;
$flow = array(10000, 20000, 30000, 40000, 50000);

function irr ($investment, $flow) {

    for ($n = 0; $n < 100; $n += 0.0001) {

        $pv = 0;
        for ($i = 0; $i < count($flow); $i++) {
            $pv = $pv + $flow[$i] / pow(1 + $n, $i + 1);
        }

        if ($pv <= $investment) {
            return round($n * 10000) / 100;
        }

    }

}

var_dump(irr($investment, $flow));


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

Ereohalm Messages postés 147 Date d'inscription vendredi 18 avril 2014 Statut Membre Dernière intervention 23 janvier 2017 17
9 févr. 2016 à 14:34
Tu as un return si pv<=invest.
        if ($pv <= $investment) {
            return round($n * 10000) / 100;
        }

Mais du coup, pas de return si cette condition n'est pas remplie, donc la fonction ne retourne rien.
0
Exact, j'ai donc rajouté le bon calcul quand la condition n'est pas respectée !
Merci :-)
0