Forum

iOS Hvordan bruker du sin, cos og tan?

M

MrPenguin9

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

Takk

SilentPanda

Moderator emeritus
8. oktober 2002
Bambusskogen


  • 13. mai 2009
Jeg antar at du bare vil bruke C-versjonene av cos, sin og tan. M

MrPenguin9

Original plakat
1. august 2008
  • 13. mai 2009
Kan jeg ha et eksempel på det.

Takk

Telefonutvikler

2. september 2008
  • 13. mai 2009
Kode: |_+_|
Er det noe mer?

Prøv å skrive dette i terminalen eller google det

menneske synd M

MrPenguin9

Original plakat
1. august 2008
  • 13. mai 2009
Men når jeg gjør 'tan(1)' i xcode gir det meg tilbake 1556013989!?!? Men brunfargen på 1 er 0,017455... Hva gjør jeg feil?

Takk R

Ron C

18. juli 2008
Chicago-området
  • 13. mai 2009
Lukter som et typeproblem

MrPenguin9 sa: Men når jeg gjør 'tan(1)' i xcode gir det meg tilbake 1556013989!?!? Men brunfargen på 1 er 0,017455... Hva gjør jeg feil?

Takk

1556013989? Det kan bare være å skrive ut en flyttallsformatert verdi som et heltall uten typekonvertering?

Hvor får du denne tan()-funksjonen fra? matte.h? Hvilken type returnerer for eksempel tan()? Tar det radianer eller grader? Hvilken type lagrer du returverdien i?

Jeg sjekket man-siden for tan() og den sier:
Kode: |_+_| Så... den eneste funksjonen som samsvarer med den signaturen tar en dobbel (automatisk konvertering) og returnerer en dobbel (også automatisk konvertering) og tar radianer.

Hvordan ser du på verdien? Hvordan ser koden din ut?

EDIT: Jeg sjekket nettopp verdien av tan(1 radian) i Calculator.app - det står: 1.557408. Så... hvorfor tror du det skal være 0,017455? Det er verdien av brunfarge (1 GRAD) M

MrPenguin9

Original plakat
1. august 2008
  • 13. mai 2009
Her er min kode fra MainView.m Code: |_+_| (Å, og jeg visste ikke at tan(x) var i radianer.) Takk for hjelpen! G

Guiyon

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

Det er problemet ditt, tan returnerer en dobbel, men %d-formatstrengen forventer et heltall. Å endre '%d' til '%lf' burde fikse det. Å skrive 'man 3 printf' på terminalen vil gi deg mye mer informasjon om printf-formatstrengene som Apple (og mange andre biblioteker) bruker; se etter delen som starter med 'Formatstrengen er sammensatt av null eller flere direktiver' R

Ron C

18. juli 2008
Chicago-området
  • 14. mai 2009
Et raskt notat om automatisk konvertering og rarheter med flyttall...

Guiyon sa: Det er problemet ditt, tan returnerer en dobbel men %d-formatstrengen forventer et heltall. Å endre '%d' til '%lf' burde fikse det. Å skrive 'man 3 printf' på terminalen vil gi deg mye mer informasjon om printf-formatstrengene som Apple (og mange andre biblioteker) bruker; se etter delen som starter med 'Formatstrengen er sammensatt av null eller flere direktiver'

Disse 'magiske' konverteringene skjer ikke med mindre kompilatoren vet at det burde være en. Et tilfelle hvor det ikke vil vite er i kode som stringWithFormat: - det vet egentlig ikke at det skal være en konvertering, så det passerer lystig langs en dobbel. Når du begynner å spille med flytende kommatyper, må du være oppmerksom på det.

En annen kort merknad om flytende kommatyper. Ikke skriv kode som: Kode: |_+_| Problemet med = og flyttallstyper er at det er svært lite sannsynlig at de er like. Til og med noe sånt som: Kode: |_+_| På tavlen din er disse tallene de samme. Inne i datamaskinen trenger de ikke å være det. Det er rart, men du må venne deg til det. M

MrPenguin9

Original plakat
1. august 2008
  • 15. mai 2009
Det funket.

Takk alle sammen for at dere hjelper meg!