2010-06-08 6 views
1

Je travaille avec le code de quelqu'un d'autre, et il y a un flotteur avec des qualités inhabituelles.Comment trouver le format d'un flotteur?

Si la sortie I du flotteur en utilisant:

NSLog(@"theFloat: %f", record.theFloat); 

Je reçois:

theFloat: 0.000000 

Cependant, si je l'utilise:

NSLog(@"(int)theFloat = %i", (int) record.theFloat); 

je reçois:

(int)theFloat: 71411232 

Comment puis-je découvrir le vrai format et la valeur du Float? Je sais qu'il devrait contenir un grand nombre.

Par ailleurs, la classe d'enregistrement qui contient le flotteur il propertizes de telle manière:

@property (assign) float* theFloat; 

Il y a aussi floatLength:

@property (assign) int floatLength; 

Et a cette méthode, ce qui semble indiquer que la float est de longueur variable (?):

- (void) copyFloat:(float*)theF ofLength:(int)len 
{ 
    float *floatcopy = malloc(len*sizeof(float)); 
    memcpy(floatcopy, theF, len*sizeof(float)); 
    self.theFloat = floatcopy; 
} 
+0

l'adresse en mémoire où le flotteur est stocké donnée par: (int) theFloat: 71411232 – Cobusve

+3

A 'float' est bien défini, mais vous travaillez avec un tableau de flotteurs pour que votre' NSLog' appelle simplement imprime l'adresse du tableau. Quel est le but de l'enregistrement? – drawnonward

Répondre

-1

L'adresse dans la mémoire où le f Loat est stocké est donné par: (int) theFloat: 71411232 Vous voulez probablement utiliser quelque chose comme:

NSLog(@"theFloat = %f", (*record.theFloat)); 

qui déréférence le pointeur et vous donner les données réelles.

+0

Ceci est complètement faux. La conversion en int tronquera un flottant en un entier. En termes C++, c'est un static_cast, pas un reinterpret_cast. Et ceci imprime seulement la première valeur de 'len'. –

+0

C'était un peu dur, je dirais. J'ai supprimé le commentaire de côté à la fin, mais l'affiche a dit qu'il avait un problème avec "un flotteur" et j'ai simplement pris son code qui imprime la valeur unique, l'adresse du tableau, et ajouté le déréférencement comme il est clair qu'il veut pour imprimer la valeur et non l'adresse. Je l'aurais dit le commentaire à la fin est faux, la majeure partie de la réponse semble très bien, bien sûr, s'il veut tous les éléments dans le tableau le faire comme ça ... – Cobusve