Forum

iOS Comment utilisez-vous le péché, le cos et le bronzage ?

M

Monsieur Pingouin9

Affiche originale
1 août 2008
  • 13 mai 2009
Comment utilisez-vous sin, cos et tan dans le SDK iPhone ? Et aussi comment utilisez-vous l'inverse d'entre eux?

Merci

SilencieuxPanda

Modérateur émérite
8 octobre 2002
La forêt de bambous


  • 13 mai 2009
Je suppose que vous utiliseriez simplement les versions C de cos, sin et tan. M

Monsieur Pingouin9

Affiche originale
1 août 2008
  • 13 mai 2009
Puis-je avoir un exemple de cela s'il vous plaît.

Merci

PhoneyDéveloppeur

2 sept. 2008
  • 13 mai 2009
Code : |_+_|
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
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 R

Ron C

18 juil. 2008
région de Chicago
  • 13 mai 2009
Ça sent comme un problème de type

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
Voici mon code de MainView.m Code : |_+_| (Oh, et je ne savais pas que bronzage (x) était en radians.) Merci les gars pour votre aide ! g

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
Une note rapide sur la conversion automatique et l'étrangeté en virgule flottante...

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
Ça a marché.

Merci à tous de m'avoir aidé !