perchè una somma può non funzionare?

  • Creatore Discussione Creatore Discussione virg
  • Data di inizio Data di inizio

virg

Nuovo Utente
19 Ott 2012
18
0
0
Buongiorno a tutti,
non so come fare a risolvere il seguente problema:
sono in un ciclo da dove un importo che può essere positivo e/o negativo a seguito di un if viene sommato in tre variabili diverse
$a $b e $c che vengono riportate su un foglio excel, delle tre variabili debbo fare una somma che mi genera $d e cioè
$d=$a-$b +$c
le variabili $a e $b sono sempre positive.
Su alcune righe $d va in overflow (2,27374E-13).
testando i tre importi subito prima della somma è tutto corretto per esempio
$a=2752,34
$b=2511,83
$c=-240,51
$d risulta uguale a -2,27E-13
il bello di tutto il giochetto è che anche sul foglio excel rifacendo la somma delle tre colonne mi da lo stesso risultato
cosa posso fare per ovviare al problema?!!
grazie in anticipo a tutti
 
ciao
non so se è un tuo errore di trascrizione, ma i float vanno in php col punto non con la virgola.
comunque prova così
PHP:
<?php
$a=2752.34;
$b=2511.83;
$c=-240.51;
$d=round(($a-$b +$c),2);//oppure round($a-$b +$c);
echo "somma= $d <br />";
?>
 
Ultima modifica:
salve Borgo,
il tuo suggerimento è stato non dico prezioso ma di più.
Però ora ti chiedo una cosa mi puoi spiegare perchè ho bisogno di usare round
quando il tutto su più di diecimila record va bene e non va solo in alcuni casi (simili a tanti altri,li ho esaminati)?
i punti sono un errore di trascrizione, in quanto l'importo poi lo debbo trasformare con le virgole
per visualizzarlo in modo corretto su excel.
cmq GRAZIE:hammer: :hammer:
 
ciao
si tratta di errori di calcolo dei float quando il risultato del calcolo è zero o molto(issimo) vicino allo zero.
infatti il risultato che ottieni è piccolissimo se ci pensi
0,0000000000000227
 

Discussioni simili