Fora

iOS Hvordan bruger du sin, cos og tan?

M

MrPenguin9

Original plakat
1. august 2008
  • 13. maj 2009
Hvordan bruger du sin, cos og tan i iPhone sdk? Og også hvordan bruger du det omvendte af dem?

Tak

SilentPanda

Moderator emeritus
8. oktober 2002
Bambusskoven


  • 13. maj 2009
Jeg gætter på, at du bare ville bruge C-versionerne af cos, sin og tan. M

MrPenguin9

Original plakat
1. august 2008
  • 13. maj 2009
Må jeg gerne have et eksempel på det.

Tak

Telefonudvikler

2. september 2008
  • 13. maj 2009
Kode: |_+_|
Er der noget mere?

Prøv at skrive dette i terminalen eller google det

menneske synd M

MrPenguin9

Original plakat
1. august 2008
  • 13. maj 2009
Men når jeg laver 'tan(1)' i xcode giver det mig 1556013989 tilbage!?!? Men tan på 1 er 0,017455... Hvad gør jeg forkert?

Tak R

Ron C

18. juli 2008
Chicago-området
  • 13. maj 2009
Det lugter af et typeproblem

MrPenguin9 sagde: Men når jeg laver 'tan(1)' i xcode giver det mig 1556013989 tilbage!?!? Men tan på 1 er 0,017455... Hvad gør jeg forkert?

Tak

1556013989? Det er måske bare at udskrive en flydende komma-formateret værdi som et heltal uden typekonvertering?

Hvorfra får du denne tan() funktion? matematik.h? Hvilken type returnerer tan(), for eksempel? Tager det radianer eller grader? Hvilken type gemmer du returværdien i?

Jeg tjekkede man-siden for tan(), og den siger:
Kode: |_+_| Så... den eneste funktion, der matcher den signatur, tager en dobbelt (automatisk konvertering) og returnerer en dobbelt (også automatisk konvertering) og tager radianer.

Hvordan ser du på værdien? Hvordan ser din kode ud?

EDIT: Jeg har lige tjekket værdien af ​​tan(1 radian) i Calculator.app - der står: 1.557408. Så... hvorfor tror du det skal være 0,017455? Det er værdien af ​​tan(1 GRAD) M

MrPenguin9

Original plakat
1. august 2008
  • 13. maj 2009
Her er min kode fra MainView.m Kode: |_+_| (Åh, og jeg vidste ikke, at tan(x) var i radianer.) Tak for hjælpen! G

Guiyon

19. april 2008
Cambridge, MA
  • 13. maj 2009
MrPenguin9 sagde: -(void)awakeFromNib {
Text.text = [NSString stringWithFormat'%d', tan(1)];
}

Der er dit problem, tan returnerer en dobbelt, men %d-formatstrengen forventer et heltal. Ændring af '%d' til '%lf' burde løse det. Hvis du skriver 'man 3 printf' i terminalen, får du meget mere information om de printf-formatstrenge, som Apple (og mange andre biblioteker) bruger; se efter den del, der starter med 'Formatstrengen er sammensat af nul eller flere direktiver' R

Ron C

18. juli 2008
Chicago-området
  • 14. maj 2009
En hurtig bemærkning om automatisk konvertering og underlighed med flydende komma...

Guiyon sagde: Der er dit problem, tan returnerer en dobbelt, men %d-formatstrengen forventer et heltal. Ændring af '%d' til '%lf' burde løse det. Hvis du skriver 'man 3 printf' i terminalen, får du meget mere information om de printf-formatstrenge, som Apple (og mange andre biblioteker) bruger; se efter den del, der starter med 'Formatstrengen er sammensat af nul eller flere direktiver'

Disse 'magiske' konverteringer forekommer ikke, medmindre compileren ved, at der burde være en. Et tilfælde, hvor det ikke vil vide det, er i kode som stringWithFormat: - det ved ikke rigtig, at der skulle være en konvertering, så det passerer lystigt en double. Når du begynder at spille med typer med flydende komma, skal du være opmærksom på det.

Endnu en kort bemærkning om typer med flydende komma. Skriv ikke kode som: Kode: |_+_| Problemet med = og flydende komma typer er, at de er meget usandsynligt at være ens. Selv noget som: Kode: |_+_| På din tavle er disse tal de samme. Inde i computeren behøver de ikke at være det. Det er mærkeligt, men du skal vænne dig til det. M

MrPenguin9

Original plakat
1. august 2008
  • 15. maj 2009
Det virkede.

Tak til jer alle for at hjælpe mig!