Forum

iOS Hur använder du sin, cos och tan?

M

MrPenguin9

Originalaffisch
1 augusti 2008
  • 13 maj 2009
Hur använder du sin, cos och tan i iPhone sdk? Och hur använder du det omvända av dem?

Tack

SilentPanda

Moderator emeritus
8 oktober 2002
Bambuskogen


  • 13 maj 2009
Jag antar att du bara skulle använda C-versionerna av cos, sin och tan. M

MrPenguin9

Originalaffisch
1 augusti 2008
  • 13 maj 2009
Kan jag ha ett exempel på det snälla.

Tack

Phoney-utvecklare

2 september 2008
  • 13 maj 2009
Kod: |_+_|
Finns det något mer?

Testa att skriva detta i terminalen eller googla det

man sin M

MrPenguin9

Originalaffisch
1 augusti 2008
  • 13 maj 2009
Men när jag gör 'tan(1)' i xcode ger det mig tillbaka 1556013989!?!? Men solbrännan på 1 är 0,017455... Vad gör jag för fel?

Tack R

Ron C

18 juli 2008
Chicago-området
  • 13 maj 2009
Det luktar typproblem

MrPenguin9 sa: Men när jag gör 'tan(1)' i xcode ger det mig tillbaka 1556013989!?!? Men solbrännan på 1 är 0,017455... Vad gör jag för fel?

Tack

1556013989? Det kanske bara är att skriva ut ett flyttalsformaterat värde som ett heltal utan typkonverteringen?

varifrån får du den här tan()-funktionen? matte.h? Vilken typ returnerar tan() till exempel? Tar det radianer eller grader? Vilken typ lagrar du returvärdet i?

Jag kollade på man-sidan för tan() och den säger:
Kod: |_+_| Så... den enda funktionen som matchar den signaturen tar en dubbel (automatisk konvertering) och returnerar en dubbel (även automatisk konvertering) och tar radianer.

Hur ser du på värdet? Hur ser din kod ut?

EDIT: Jag kollade precis värdet på tan(1 radian) i Calculator.app - det står: 1,557408. Så... varför tycker du att det ska vara 0,017455? Det är värdet av solbränna(1 DEGREE) M

MrPenguin9

Originalaffisch
1 augusti 2008
  • 13 maj 2009
Här är min kod från MainView.m Code: |_+_| (Åh, och jag visste inte att tan(x) var i radianer.) Tack för hjälpen! G

Guiyon

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

Det är ditt problem, tan returnerar en dubbel men %d-formatsträngen förväntar sig ett heltal. Att ändra '%d' till '%lf' borde fixa det. Om du skriver 'man 3 printf' på terminalen får du mycket mer information om de formatsträngar i printf-stil som Apple (och många andra bibliotek) använder; leta efter delen som börjar med 'Formatsträngen består av noll eller fler direktiv' R

Ron C

18 juli 2008
Chicago-området
  • 14 maj 2009
En snabb anteckning om automatisk konvertering och flyttalskonstigheter...

Guiyon sa: Det är ditt problem, tan returnerar en dubbel men %d formatsträngen förväntar sig ett heltal. Att ändra '%d' till '%lf' borde fixa det. Om du skriver 'man 3 printf' på terminalen får du mycket mer information om de formatsträngar i printf-stil som Apple (och många andra bibliotek) använder; leta efter delen som börjar med 'Formatsträngen består av noll eller fler direktiv'

Dessa 'magiska' omvandlingar sker inte om inte kompilatorn vet att det borde finnas en. Ett fall där det inte kommer att veta är i kod som stringWithFormat: - det vet inte riktigt att det borde finnas en konvertering, så det passerar glatt en dubbel. När du väl börjar spela med flyttalstyper måste du vara uppmärksam på det.

En annan kort notering om flyttalstyper. Skriv inte kod som: Kod: |_+_| Problemet med = och flyttalstyper är att de är mycket osannolikt att vara lika. Till och med något som: Kod: |_+_| På din whiteboard är dessa siffror desamma. Inuti datorn behöver de inte vara det. Det är konstigt, men du måste vänja dig vid det. M

MrPenguin9

Originalaffisch
1 augusti 2008
  • 15 maj 2009
Det fungerade.

Tack alla för att ni hjälpte mig!