View Full Version : [PHP] Errori con espressioni e dati double
Ciao a tutti :)
Sto facendo un progetto in PHP e mi capitano dei valori assurdi quando eseguo delle semplici espressioni con valori double, e non riesco a capire come sia possibile :muro:
Questa è la parte di codice che non torna:
$tot1 = 532597.84;
$tot2 = 532252.53;
$tot3 = 10.33;
$risultato = $tot3 + ($tot1-$tot2);
echo "Risultato = ".$risultato;
Eseguendo questa operazione invece di stampare "Risultao = 355.64" stampa "Risultato = 355.63999999994"
Ma com'è possibile? :cry:
Il bello è che non lo fa sempre sto casino....lo fa solo a seconda dei numeri.....:boh:
Nel mio caso specifico, $tot1 viene presa da un file, $tot2 e $tot3 vrengono prese da campi double in una tabella mysql.
Anche provando a fare tutte le conversioni possibili a variabili di tipo double prima di eseguire l'espressione, il risultato non cambia!
Illuminatemi voi! :)
Ciao,
GHz :help: :help: :help: :help: :help:
Fenomeno85
14-02-2005, 11:07
$tot1 è double anche lui non vorrei che fa un cast
~§~ Sempre E Solo Lei ~§~
Originariamente inviato da GHz
Eseguendo questa operazione invece di stampare "Risultao = 355.64" stampa "Risultato = 355.63999999994"
Aiaiaiaiaiaiaiaiaiiaaiaiaiiaiaiaiiiiiiiiiiiiiiiiiiiiii mi sa che devi andare a trovare nuovamente il nostro amico Corsini...se ti sente... :D
Quel risultato è dovuto al fatto che non tutti i numeri reali sono rappresentabili in un calcolatore... Probabilmente almeno uno dei quattro numeri (probabile che sia il risultato della sottrazione) che prendono parte all'operazione non è rappresentabile in maniera esatta...
Fenomeno85
14-02-2005, 11:22
Originariamente inviato da cionci
Aiaiaiaiaiaiaiaiaiiaaiaiaiiaiaiaiiiiiiiiiiiiiiiiiiiiii mi sa che devi andare a trovare nuovamente il nostro amico Corsini...se ti sente... :D
Quel risultato è dovuto al fatto che non tutti i numeri reali sono rappresentabili in un calcolatore... Probabilmente almeno uno dei quattro numeri (probabile che sia il risultato della sottrazione) che prendono parte all'operazione non è rappresentabile in maniera esatta...
ot cos'è la storia di Corsini che son curioso + di una donna? :fagiano:
scusa era quello che intendevo io alla fine o no?! :wtf:
~§~ Sempre E Solo Lei ~§~
Originariamente inviato da Fenomeno85
ot cos'è la storia di Corsini che son curioso + di una donna? :fagiano:
scusa era quello che intendevo io alla fine o no?! :wtf:
No...non è un cast...semplicemente con quelle operazioni si accumulano errori di rappresentazione che portano ad un risultato errato (se vai a vedere la percentuale è veramente molto bassa)...
Paolo Corsini è il preside della facoltà di ingegneria di Pisa...
Fenomeno85
14-02-2005, 13:04
Originariamente inviato da cionci
No...non è un cast...semplicemente con quelle operazioni si accumulano errori di rappresentazione che portano ad un risultato errato (se vai a vedere la percentuale è veramente molto bassa)...
Paolo Corsini è il preside della facoltà di ingegneria di Pisa...
:eekk:
questo non lo sapevo
~§~ Sempre E Solo Lei ~§~
Originariamente inviato da cionci
Aiaiaiaiaiaiaiaiaiiaaiaiaiiaiaiaiiiiiiiiiiiiiiiiiiiiii mi sa che devi andare a trovare nuovamente il nostro amico Corsini...se ti sente... :D
Al massimo il Lopriore....:fagiano:....o il Longo :ops:
Quel risultato è dovuto al fatto che non tutti i numeri reali sono rappresentabili in un calcolatore... Probabilmente almeno uno dei quattro numeri (probabile che sia il risultato della sottrazione) che prendono parte all'operazione non è rappresentabile in maniera esatta...
Si me lo ero immaginato.....ma.....come dovrei fare per risolvere?? :boh:
Si il problema sta nella sottrazione, cmq come ho già detto non lo fa sempre.....e se gli dico di stampare i 3 numeri $tot li stampa bene :cry:
Puoi fare un arrotondamento alla seconda cifra decimale...usa la funzione round...
Originariamente inviato da cionci
Puoi fare un arrotondamento alla seconda cifra decimale...usa la funzione round...
Buona idea http://www.webalice.it/landipaolo/immagini/sisi.gif
Sembra che funga bene :)
Tnx :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.