2010-09-15 6 views
0

Je suppose que c'est la chose la plus simple, mais c'est vraiment confus. Je suis sûr que j'ai déjà utilisé des doubles avec succès mais maintenant j'ai des problèmes.double problème dans xcode ou moi faire quelque chose de mal

Je viens de faire un nouveau projet 'test' pour voir si je peux le faire fonctionner, mais tout ce que j'essaie de faire est de définir une double valeur.

Ainsi, dans le viewDidLoad View Controller i ai dactylographiées:

double z = 2938.09; 
NSLog(@"z = %d", z); 

je me attends à la sortie 'z = 2938,09' mais je reçois 'z = 343597384'

doubles z = 3.4 retourne z = 858993459

la plupart des valeurs entières également rendent compte que z = 0, mais pas toujours (parfois un autre numéro étrange comme ci-dessus est vomie)

Am I mi ssing quelque chose ici ou quelque chose d'étrange passe ??

choses même essayé comme

NSString *newString = [[NSString alloc] initWithString:@"3.4"]; 
double z = [newString.text doubleValue]; 
NSLog(@"z = %d", z); 
[newString release]; 

mais encore obtenir le fou z = 858993459 :(

Répondre

4

Double est un double flotteur de précision, et donc, pour imprimer, vous devez utiliser la même manière utilisée pour imprimer float s:

NSString *newString = [[NSString alloc] initWithString:@"3.4"]; 
double z = [newString.text doubleValue]; 
NSLog(@"z = %f", z); 
[newString release]; 

%d est utilisé pour imprimer signé int.

Jetez un oeil à ce lien avec le format pour spécificateurs NSLog: http://www.cocoadev.com/index.pl?NSLog

+0

Ahh - quelle belle vue c'est de voir z = 3.400000! Merci les gars, maintenant je peux rester coincé dans mon code correct et espérer régler les choses. – Tris

6

Pour imprimer la valeur Double utilisation% f au lieu de% d.

Format NSLog spécificateurs

% @ Objet

% d,% i signé int

% u unsigned

% f flotteur/à double

% x,% X hexadécimal int

% o octal

% zu size_t

pointeur

% en p

% float/double (en notation scientifique)

flotteur

% en g/double (en% f ou% e, en fonction de la valeur)

% La chaîne de C (bytes)

% S chaîne C (unichar)

de%.* De la chaîne Pascal (nécessite deux arguments, passer pstr [0] en tant que premier, pstr + 1 en tant que seconde)

% c caractère

% C unichar

% lld long long

% llu unsigned long long

% Lf long double

+0

Ahh - quelle belle vue, il est de voir z = 3,400000! Merci les gars, maintenant je peux rester coincé dans mon propre code et, espérons-le, trier les choses.Tv – Tris

Questions connexes