MrPenguin9
Originalplakat- 1. August 2008
- 13. Mai 2009
Vielen Dank
SilentPanda
emeritierter Moderator
- 8. Oktober 2002
- Der Bambuswald
- 13. Mai 2009
MrPenguin9
Originalplakat- 1. August 2008
- 13. Mai 2009
Vielen Dank
PhoneyDeveloper
- 2. September 2008
- 13. Mai 2009
Gibt es noch etwas?
Versuchen Sie, dies im Terminal einzugeben oder googeln Sie es
Mann Sünde m
MrPenguin9
Originalplakat- 1. August 2008
- 13. Mai 2009
Vielen Dank R
Ron C
- 18. Juli 2008
- Chicago-Gebiet
- 13. Mai 2009
MrPenguin9 sagte: Aber wenn ich 'tan(1)' in xcode mache, gibt es mir 1556013989 zurück!?!? Aber die Bräune von 1 ist 0,017455... Was mache ich falsch?
Vielen Dank
1556013989? Es könnte nur ein gleitkommaformatierter Wert als Ganzzahl ohne die Typkonvertierung gedruckt werden?
Woher bekommen Sie diese tan()-Funktion? mathe? Welchen Typ gibt beispielsweise tan() zurück? Braucht es Radiant oder Grad? In welchem Typ speicherst du den Rückgabewert?
Ich habe die Manpage für tan() überprüft und dort steht:
Code: |_+_| Also .... die einzige Funktion, die dieser Signatur entspricht, nimmt ein Double (automatische Konvertierung) und gibt ein Double zurück (ebenfalls automatische Konvertierung) und nimmt Radiant an.
Wie siehst du den Wert? Wie sieht dein Code aus?
BEARBEITEN: Ich habe gerade den Wert von tan (1 Radiant) in Calculator.app überprüft - er sagt: 1,557408. Also... warum sollte es Ihrer Meinung nach 0,017455 sein? Das ist der Wert von tan (1 GRAD) m
MrPenguin9
Originalplakat- 1. August 2008
- 13. Mai 2009
Guiyon
- 19. April 2008
- Cambridge, MA
- 13. Mai 2009
MrPenguin9 sagte: -(void)wakeFromNib {
Text.text = [NSString stringWithFormat'%d', tan(1)];
}
Es gibt Ihr Problem, tan gibt ein Double zurück, aber der %d-Formatstring erwartet eine Ganzzahl. Das Ändern von '%d' in '%lf' sollte das beheben. Wenn Sie am Terminal 'man 3 printf' eingeben, erhalten Sie viel mehr Informationen über die Formatzeichenfolgen im printf-Stil, die Apple (und viele andere Bibliotheken) verwenden; Suchen Sie nach dem Teil, der mit 'Der Formatstring besteht aus null oder mehr Direktiven' beginnt. R
Ron C
- 18. Juli 2008
- Chicago-Gebiet
- 14. Mai 2009
Guiyon sagte: Da ist dein Problem, tan gibt ein Double zurück, aber der %d-Formatstring erwartet eine ganze Zahl. Das Ändern von '%d' in '%lf' sollte das beheben. Wenn Sie am Terminal 'man 3 printf' eingeben, erhalten Sie viel mehr Informationen über die Formatzeichenfolgen im printf-Stil, die Apple (und viele andere Bibliotheken) verwenden; Suchen Sie nach dem Teil, der mit 'Der Formatstring besteht aus null oder mehr Direktiven' beginnt.
Diese 'magischen' Typkonvertierungen treten nicht auf, es sei denn, der Compiler weiß, dass es eine geben sollte. Ein Fall, in dem es nicht weiß, ist in Code wie stringWithFormat: - Es weiß nicht wirklich, dass es eine Konvertierung geben sollte, also gibt es fröhlich ein Double weiter. Sobald Sie anfangen, mit Gleitkommatypen zu spielen, müssen Sie darauf achten.
Noch eine kurze Anmerkung zu Gleitkommatypen. Schreiben Sie keinen Code wie: Code: |_+_| Das Problem mit = und Gleitkommatypen besteht darin, dass es sehr unwahrscheinlich ist, dass sie gleich sind. Sogar so etwas wie: Code: |_+_| Auf Ihrem Whiteboard sind diese Zahlen identisch. Im Computer müssen sie nicht sein. Es ist seltsam, aber man muss sich daran gewöhnen. m
MrPenguin9
Originalplakat- 1. August 2008
- 15. Mai 2009
Danke an alle, die mir geholfen haben!
Beliebte Beiträge