• User

    Problema con arrotondamento numeri

    Ciao a tutti!

    Sto facendo uno script per un sito di prestiti online, ma mi trovo in difficoltà perchè vorrei impedire che i numeri vengano arrotondati.

    Vi posto il codice:

    <html>
    <head>
    </head>
    <body>
    <?php
    //$M = capitale
    //$t = tasso d'interesse
    //$N = numero periodi

    $M = $_POST["M"];
    $N = $_POST["durata"]$_POST["cadenza"];
    $t = $_POST["tasso"]/(100
    $_POST["cadenza"]);

    $T = $t + 1;
    $n = $N - 1;

    $a = array();
    $i = 0;
    while ($i <= $n) {
    $pow = pow($T,$i);
    array_push($a,$pow);
    $i = $i + 1;
    }

    $somma = array_sum($a);
    $pot = pow($T,$N);
    $rata = $M*$pot/$somma;
    $tot = $rata*$N;
    $interessi = $tot - $M;
    $capres = $M;
    $qtaint = $capres * $t;
    $qtacap = $rata - $qtaint;

    //formattazione cifre
    $M = number_format($M,2,',','.');
    $rata = number_format($rata,2,',','.');
    $tot = number_format($tot,2,',','.');
    $interessi = number_format($interessi,2,',','.');
    $capres = number_format($capres,2,',','.');
    $qtaint = number_format($qtaint,2,',','.');
    $qtacap = number_format($qtacap,2,',','.');
    $capres1 = number_format($capres1,2,',','.');
    $qtaint1 = number_format($qtaint1,2,',','.');
    $qtacap1 = number_format($qtacap1,2,',','.');
    $capres2 = number_format($capres2,2,',','.');
    $qtaint2 = number_format($qtaint2,2,',','.');
    $qtacap2 = number_format($qtacap2,2,',','.');
    //fine formattazione

    if($_POST["cadenza"]==12) $freq="mensile";
    if($_POST["cadenza"]==6) $freq="bimestrale";
    if($_POST["cadenza"]==4) $freq="trimestrale";
    if($_POST["cadenza"]==2) $freq="semestrale";

    echo "<br>Capitale finanziato = ".$M ." ?<br>";
    echo "Durata del mutuo = ".$_POST["durata"] ." anni<br>";
    echo "Frequenza della rata = ". $freq ."<br>";
    echo "tasso d'interesse = ".$_POST["tasso"] ."% annuo<br>";

    echo "<br>importo della rata = ".$rata ." ?<br>";
    echo "numero di rate = ".$N ." rate<br>";
    echo "totale rate = ".$tot ." ?<br>";
    echo "interessi = ".$interessi." ?";
    ?>
    <table border="1">
    <tr>
    <td>N.° Rata</td>
    <td>Quota Interessi</td>
    <td>Quota Capitale</td>
    <td>Capitale Residuo</td>
    </tr>
    <tr>
    <td>0</td>
    <td>0</td>
    <td>0</td>
    <td>
    <?php
    echo ($capres);
    ?>
    </td>
    </tr>
    <tr>
    <td>1</td>
    <td>
    <?php
    echo ($qtaint);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap);
    ?>
    </td>
    <td>
    <?php
    echo ($capres1 = $capres - $qtacap);
    ?>
    </td>
    </tr>
    <tr>
    <td>2</td>
    <td>
    <?php
    echo ($qtaint1 = $capres1 * $t);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap1 = $rata - $qtaint1);
    ?>
    </td>
    <td>
    <?php
    echo ($capres2 = $capres1 - $qtaint1);
    ?>
    </td>
    </tr>
    <tr>
    <td>3</td>
    <td>
    <?php
    echo ($qtaint2 = $capres2 * $t);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap2 = $rata - $qtaint2);
    ?>
    </td>
    <td>
    <?php
    echo ($capres3 = $capres2 - $qtaint2);
    ?>
    </td>
    </tr>
    </table>
    </body>
    </html>

    Premetto che è ancora incompleto (ho solo calcolato 3 rate di ammortamento), però ho visto che mi sfasa i calcoli, visto che mi arrotonda le cifre... come posso fare?

    Grazie a tutti! 🙂


  • User

    AGGIORNAMENTO:
    Sono riuscito a risolvere la cosa, ecco il codice aggiornato:>
    <html>
    <head>
    </head>
    <body>
    <?php
    //$M = capitale
    //$t = tasso d'interesse
    //$N = numero periodi

    $M = $_POST["M"];
    $N = $_POST["durata"]$_POST["cadenza"];
    $t = $_POST["tasso"]/(100
    $_POST["cadenza"]);

    $T = $t + 1;
    $n = $N - 1;

    $a = array();
    $i = 0;
    while ($i <= $n) {
    $pow = pow($T,$i);
    array_push($a,$pow);
    $i = $i + 1;
    }

    $somma = array_sum($a);
    $pot = pow($T,$N);
    $rata = $M*$pot/$somma;
    $tot = $rata*$N;
    $interessi = $tot - $M;
    $capres = $M;
    $qtaint = $capres * $t;
    $qtacap = $rata - $qtaint;
    $capres1 = $capres - $qtacap;
    $qtaint1 = $capres1 * $t;
    $qtacap1 = $rata - $qtaint1;
    $capres2 = $capres1 - $qtacap1;
    $qtaint2 = $capres2 * $t;
    $qtacap2 = $rata - $qtaint2;
    $capres3 = $capres2 - $qtacap2;
    $qtaint3 = $capres3 * $t;
    $qtacap3 = $rata - $qtaint3;
    $capres4 = $capres3 - $qtacap3;
    $qtaint4 = $capres4 * $t;
    $qtacap4 = $rata - $qtaint4;
    $capres5 = $capres4 - $qtacap4;
    $qtaint5 = $capres5 * $t;
    $qtacap5 = $rata - $qtaint5;
    $capres6 = $capres5 - $qtacap5;
    $qtaint6 = $capres6 * $t;
    $qtacap6 = $rata - $qtaint6;
    $capres7 = $capres6 - $qtacap6;
    $qtaint7 = $capres7 * $t;
    $qtacap7 = $rata - $qtaint7;
    $capres8 = $capres7 - $qtacap7;
    $qtaint8 = $capres8 * $t;
    $qtacap8 = $rata - $qtaint8;
    $capres9 = $capres8 - $qtacap8;
    $qtaint9 = $capres9 * $t;
    $qtacap9 = $rata - $qtaint9;
    $capres10 = $capres9 - $qtacap9;
    $qtaint10 = $capres10 * $t;
    $qtacap10 = $rata - $qtaint10;
    $capres11 = $capres10 - $qtacap10;
    $qtaint11 = $capres11 * $t;
    $qtacap11 = $rata - $qtaint11;
    $capres12 = $capres11 - $qtacap11;
    $qtaint12 = $capres12 * $t;
    $qtacap12 = $rata - $qtaint12;
    $capres13 = $capres12 - $qtacap12;
    $qtaint13 = $capres13 * $t;
    $qtacap13 = $rata - $qtaint13;
    $capres14 = $capres13 - $qtacap13;
    $qtaint14 = $capres14 * $t;
    $qtacap14 = $rata - $qtaint14;
    $capres15 = $capres14 - $qtacap14;
    $dec = 2 ; // valori decimali a cui arrotondare
    $d = "," ; // Separatore decimali
    $k = "." ; // separatore migliaia
    $numrata = 0;
    //formattazione cifre
    $M = number_format($M,$dec,$d,$k);
    $rata = number_format($rata,$dec,$d,$k);
    $tot = number_format($tot,$dec,$d,$k);
    $interessi = number_format($interessi,$dec,$d,$k);
    $capres = number_format($capres,$dec,$d,$k);
    $qtaint = number_format($qtaint,$dec,$d,$k);
    $qtacap = number_format($qtacap,$dec,$d,$k);
    $capres1 = number_format($capres1,$dec,$d,$k);
    $qtaint1 = number_format($qtaint1,$dec,$d,$k);
    $qtacap1 = number_format($qtacap1,$dec,$d,$k);
    $capres2 = number_format($capres2,$dec,$d,$k);
    $qtaint2 = number_format($qtaint2,$dec,$d,$k);
    $qtacap2 = number_format($qtacap2,$dec,$d,$k);
    $capres3 = number_format($capres3,$dec,$d,$k);
    $qtaint3 = number_format($qtaint3,$dec,$d,$k);
    $qtacap3 = number_format($qtacap3,$dec,$d,$k);
    $capres4 = number_format($capres4,$dec,$d,$k);
    $qtaint4 = number_format($qtaint4,$dec,$d,$k);
    $qtacap4 = number_format($qtacap4,$dec,$d,$k);
    $capres5 = number_format($capres5,$dec,$d,$k);
    $qtaint4 = number_format($qtaint4,$dec,$d,$k);
    $qtacap4 = number_format($qtacap4,$dec,$d,$k);
    $capres5 = number_format($capres5,$dec,$d,$k);
    $qtaint5 = number_format($qtaint5,$dec,$d,$k);
    $qtacap5 = number_format($qtacap5,$dec,$d,$k);
    $capres6 = number_format($capres6,$dec,$d,$k);
    $qtaint6 = number_format($qtaint6,$dec,$d,$k);
    $qtacap6 = number_format($qtacap6,$dec,$d,$k);
    $capres7 = number_format($capres7,$dec,$d,$k);
    $qtaint7 = number_format($qtaint7,$dec,$d,$k);
    $qtacap7 = number_format($qtacap7,$dec,$d,$k);
    $capres8 = number_format($capres8,$dec,$d,$k);
    $qtaint8 = number_format($qtaint8,$dec,$d,$k);
    $qtacap8 = number_format($qtacap8,$dec,$d,$k);
    $capres9 = number_format($capres9,$dec,$d,$k);
    $qtaint9 = number_format($qtaint9,$dec,$d,$k);
    $qtacap9 = number_format($qtacap9,$dec,$d,$k);
    $capres10 = number_format($capres10,$dec,$d,$k);
    $qtaint10 = number_format($qtaint10,$dec,$d,$k);
    $qtacap10 = number_format($qtacap10,$dec,$d,$k);
    $capres11 = number_format($capres11,$dec,$d,$k);
    $qtaint11 = number_format($qtaint11,$dec,$d,$k);
    $qtacap11 = number_format($qtacap11,$dec,$d,$k);
    $capres12 = number_format($capres12,$dec,$d,$k);
    $qtaint12 = number_format($qtaint12,$dec,$d,$k);
    $qtacap12 = number_format($qtacap12,$dec,$d,$k);
    $capres13 = number_format($capres13,$dec,$d,$k);
    $qtaint13 = number_format($qtaint13,$dec,$d,$k);
    $qtacap13 = number_format($qtacap13,$dec,$d,$k);
    $capres14 = number_format($capres14,$dec,$d,$k);
    $qtaint14 = number_format($qtaint14,$dec,$d,$k);
    $qtacap14 = number_format($qtacap14,$dec,$d,$k);
    $capres15 = number_format($capres15,$dec,$d,$k);
    //fine formattazione

    if($_POST["cadenza"]==12) $freq="mensile";
    if($_POST["cadenza"]==6) $freq="bimestrale";
    if($_POST["cadenza"]==4) $freq="trimestrale";
    if($_POST["cadenza"]==2) $freq="semestrale";

    echo "<br>Capitale finanziato = ".$M ." ?<br>";
    echo "Durata del mutuo = ".$_POST["durata"] ." anni<br>";
    echo "Frequenza della rata = ". $freq ."<br>";
    echo "tasso d'interesse = ".$_POST["tasso"] ."% annuo<br>";

    echo "<br>importo della rata = ".$rata ." ?<br>";
    echo "numero di rate = ".$N ." rate<br>";
    echo "totale rate = ".$tot ." ?<br>";
    echo "interessi = ".$interessi." ?";
    ?>
    <table border="0" align="center">
    <tr>
    <td>N.° Rata</td>
    <td>Quota Interessi</td>
    <td>Quota Capitale</td>
    <td>Capitale Residuo</td>
    </tr>
    <tr>
    <td>
    <?php
    echo ($numrata);
    ?>
    </td>
    <td>0</td>
    <td>0</td>
    <td>
    <?php
    echo ($capres);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap);
    ?>
    </td>
    <td>
    <?php
    echo ($capres1);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint1);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap1);
    ?>
    </td>
    <td>
    <?php
    echo ($capres2);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint2);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap2);
    ?>
    </td>
    <td>
    <?php
    echo ($capres3);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint3);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap3);
    ?>
    </td>
    <td>
    <?php
    echo ($capres4);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint4);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap4);
    ?>
    </td>
    <td>
    <?php
    echo ($capres5);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint5);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap5);
    ?>
    </td>
    <td>
    <?php
    echo ($capres6);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint6);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap6);
    ?>
    </td>
    <td>
    <?php
    echo ($capres7);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint7);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap7);
    ?>
    </td>
    <td>
    <?php
    echo ($capres8);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint8);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap8);
    ?>
    </td>
    <td>
    <?php
    echo ($capres9);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint9);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap9);
    ?>
    </td>
    <td>
    <?php
    echo ($capres10);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint10);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap10);
    ?>
    </td>
    <td>
    <?php
    echo ($capres11);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint11);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap11);
    ?>
    </td>
    <td>
    <?php
    echo ($capres12);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint12);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap12);
    ?>
    </td>
    <td>
    <?php
    echo ($capres13);
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php
    echo (++$numrata);
    ?>
    </td>
    <td>
    <?php
    echo ($qtaint13);
    ?>
    </td>
    <td>
    <?php
    echo ($qtacap13);
    ?>
    </td>
    <td>
    <?php
    echo ($capres14);
    ?>
    </td>
    </tr>
    </table>
    </body>
    </html>

    Solo che il mio grande problema adesso è un altro:

    Se l'utente vuole fare un preventivo di 40 anni con pagamento mensile, qui faccio notte ora che metto tutte le variabili e le intabello...c'è una soluzione? grazie!


  • ModSenior

    Ciao terrasamba,

    non puoi utilizzare un array per velocizzare?


  • User

    Ciao!
    Ho iniziato da poco a studiare il php, quindi se magari mi puoi fare un esempio di applicazione pratica sugli array, o se mi dici dove leggere qualcosa mi faresti un piacere.
    Intanto grazie per la risposta. 🙂


  • ModSenior

    Per gli array, trovi cosa sono e come si usano in qualsiasi guida di programmazione in quanto esistono in tutti i linguaggi e non cambia praticamente nulla(Può cambiare la sintassi, ma il linea teorica il funzionamento è identico), quindi puoi anche cercare una guida per un altro linguaggio.

    Una guida base sugli array la trovi qui:
    http://www.giorgiotave.it/guida_php/array.php
    Qualcosa un pò più avanzata con un pò di esempi la trovi sul manuale:
    php.net/manual/en/language.types.array.php


  • User

    Grazie per la risposta, ho iniziato a studiare gli array, solo che non riesco a capire come applicarli al mio caso... non è che mi potresti fare, tu o chi ne ha voglia, un piccolo esempio col mio codice? giusto un indizio... per favore... 🙂