PDA

View Full Version : [C++] Dubbio float


MaxTora
05-04-2008, 16:15
Ciao a tutti faccio una domanda banale sapete dirmi perche se dichiaro

float A=5.5
float B=5.4
float C= A-B

C anziche essere 0.1 mi da come risultato 0.09999

Forse sara elementare ma non capisco potete aiutarmi?

wisher
05-04-2008, 16:39
Ciao a tutti faccio una domanda banale sapete dirmi perche se dichiaro

float A=5.5
float B=5.4
float C= A-B

C anziche essere 0.1 mi da come risultato 0.09999

Forse sara elementare ma non capisco potete aiutarmi?
E' un problema dovuto alla codifica dei float.
Se provi a stampare A e B non otterrai i valori esatti, ma il numero codificato che più gli si avvicina tra quelli rappresentabili

MaxTora
05-04-2008, 16:42
E per avere un risultato preciso come bisogna fare?:confused:

MaxTora
05-04-2008, 17:17
Ho provato ha usare double anziche float e sembra funzionare.
Ma quale è la differenza tra double e float a cosa serve float se double è piu preciso?

MaxTora
05-04-2008, 18:17
Retifico la risposta precedente neanche con double funziona come si fa per avere la massima precisione?

fek
05-04-2008, 18:39
Ho provato ha usare double anziche float e sembra funzionare.
Ma quale è la differenza tra double e float a cosa serve float se double è piu preciso?

Double e' piu' "preciso" quindi puo' rappresentare piu' valori, ma non vuol dire che puo' rappresentare infiniti valori. E' comunque un'approssimazione. Se vuoi una rappresentazione esatta devi scriverti da solo una classe numerica con precisione infinita (a scapito della velocita'), oppure usare Python che supporta nativamente questi numeri. Ouch.

MaxTora
05-04-2008, 18:45
OK grazie.:)

wisher
06-04-2008, 19:39
Double e' piu' "preciso" quindi puo' rappresentare piu' valori, ma non vuol dire che puo' rappresentare infiniti valori. E' comunque un'approssimazione. Se vuoi una rappresentazione esatta devi scriverti da solo una classe numerica con precisione infinita (a scapito della velocita'), oppure usare Python che supporta nativamente questi numeri. Ouch.
Sicuro che nessuno ti abbia rubato l'account:D

wizard1993
06-04-2008, 20:51
Sicuro che nessuno ti abbia rubato l'account:D
infatti è da molto che cdi non si vede

cdimauro
06-04-2008, 21:34
Son qui (adesso che i miei figli dormono :| ), ma se non c'è motivo oppure qualcuno ha già esposto la soluzione al problema, è inutile che scriva. :)