- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con arrotondamento numeri
-
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 formattazioneif($_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!
-
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 formattazioneif($_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!
-
Ciao terrasamba,
non puoi utilizzare un array per velocizzare?
-
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.
-
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
-
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...