Monsieur Pingouin9
Affiche originale- 1 août 2008
- 13 mai 2009
Merci
SilencieuxPanda
Modérateur émérite
- 8 octobre 2002
- La forêt de bambous
- 13 mai 2009
Monsieur Pingouin9
Affiche originale- 1 août 2008
- 13 mai 2009
Merci
PhoneyDéveloppeur
- 2 sept. 2008
- 13 mai 2009
Y a-t-il quelque chose de plus ?
Essayez de taper ceci dans le terminal ou google
homme péché M
Monsieur Pingouin9
Affiche originale- 1 août 2008
- 13 mai 2009
Merci R
Ron C
- 18 juil. 2008
- région de Chicago
- 13 mai 2009
MrPenguin9 a dit : Mais quand je fais 'tan(1)' dans xcode, cela me renvoie 1556013989 !?!? Mais le bronzage de 1 est de 0,017455... Qu'est-ce que je fais mal ?
Merci
1556013989 ? Il se peut qu'il imprime simplement une valeur formatée en virgule flottante sous forme d'entier sans la conversion de type ?
D'où tenez-vous cette fonction tan() ? math.h? Quel type renvoie tan(), par exemple ? Faut-il des radians ou des degrés ? Dans quel type stockez-vous la valeur de retour ?
J'ai vérifié la page de manuel pour tan() et cela dit :
Code : |_+_| Donc.... la seule fonction qui correspond à cette signature prend un double (conversion automatique) et renvoie un double (conversion automatique également) et prend des radians.
Comment voyez-vous la valeur ? A quoi ressemble ton code ?
EDIT : je viens de vérifier la valeur de tan (1 radian) dans Calculator.app - il est dit : 1.557408. Alors... pourquoi pensez-vous qu'il devrait être de 0,017455 ? C'est la valeur de tan (1 DEGREE) M
Monsieur Pingouin9
Affiche originale- 1 août 2008
- 13 mai 2009
Guiyon
- 19 avril 2008
- Cambridge, MA
- 13 mai 2009
MrPenguin9 a dit : -(void)wakeFromNib {
Text.text = [NSString stringWithFormat'%d', tan(1)];
}
Voilà votre problème, tan renvoie un double mais la chaîne de format %d attend un entier. Changer le '%d' en '%lf' devrait résoudre ce problème. Taper « man 3 printf » sur le terminal vous donnera beaucoup plus d'informations sur les chaînes de format de style printf qu'Apple (et de nombreuses autres bibliothèques) utilisent ; recherchez la partie qui commence par 'La chaîne de format est composée de zéro ou plusieurs directives' R
Ron C
- 18 juil. 2008
- région de Chicago
- 14 mai 2009
Guiyon a dit : Voilà votre problème, tan renvoie un double mais la chaîne de format %d attend un entier. Changer le '%d' en '%lf' devrait résoudre ce problème. Taper « man 3 printf » sur le terminal vous donnera beaucoup plus d'informations sur les chaînes de format de style printf qu'Apple (et de nombreuses autres bibliothèques) utilisent ; recherchez la partie qui commence par 'La chaîne de format est composée de zéro ou plusieurs directives'
Ces conversions de type « magique » ne se produisent que si le compilateur sait qu'il devrait y en avoir une. Un cas où il ne saura pas est dans un code comme stringWithFormat : - il ne sait pas vraiment qu'il devrait y avoir une conversion, alors il passe joyeusement un double. Une fois que vous commencez à jouer avec des types à virgule flottante, vous devez faire attention à cela.
Une autre brève note sur les types à virgule flottante. N'écrivez pas de code comme : Code : |_+_| Le problème avec les types = et à virgule flottante est qu'il est très peu probable qu'ils soient égaux. Même quelque chose comme : Code : |_+_| Sur votre tableau blanc, ces chiffres sont les mêmes. À l'intérieur de l'ordinateur, ils n'ont pas à l'être. C'est bizarre, mais il faut s'y habituer. M
Monsieur Pingouin9
Affiche originale- 1 août 2008
- 15 mai 2009
Merci à tous de m'avoir aidé !
Articles Populaires