|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6025
|
[C] Cast double float
Salve,
ho un dubbio su questo tipo di cast. Siccome ho un programma che scrive i risultati in un file binario, ma tali risultati prima li casta da double a float, siamo sicuri che ogni volta che tronca in double dia esattamente lo stesso risultato ? Inoltre prima tali valori li mette in una funzione sin(atan(x)) Perché il binario mi viene differente ogni volta ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Non ho ben capito il cast che fai, se fai un cast da float a double non ci sono perdite di dati, se fai il contrario invece possono esserci
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6025
|
Da double a float. So che possono esserci perdite di dati, ma quello che mi chiedevo è se tali perdite sono sempre le stesse o possono variare.
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Se il numero è sempre lo stesso la perdita deve essere sempre uguale, se i numeri sono diversi le perdite saranno differenti, potrebbero anche non esserci per alcuni numeri
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
Dato lo stesso input e lo stesso codice eseguibile anche le perdite saranno costanti pur ripetendo una data operazione N volte. Dunque se salvando un double x si ottiene un float che ad esempio vale x - FLT_EPSILON, ciò non vuol dire che salvando un double y il valore salvato varrà y - FLT_EPSILON, ma salvando 10 volte un double x castato a float (effettuando il casting ad ogni salvataggio) si salverà 10 volte lo stesso float. Bisogna comunque considerare che lo stesso sorgente C(++) può essere compilato in diversi modi, e la modifica di un'impostazione di ottimizzaizione può cambiare la precisione delle operazioni in virgola mobile se applicata al codice che li usa. In sostanza è da considerarsi *VIETATO* salvare dati in maniera approssimata rispetto all'uso che se ne fa all'interno del programma (se hai un double salvarlo come float etc).
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:33.