Fòrums

iOS Com s'utilitza sin, cos i tan?

M

Senyor Pingüí 9

Cartell original
1 d'agost de 2008
  • 13 de maig de 2009
Com s'utilitza sin, cos i tan a l'iPhone SDK? I també com s'utilitza la inversa d'ells?

Gràcies

SilentPanda

Moderador emèrit
Oct 8, 2002
El bosc de bambú


  • 13 de maig de 2009
Suposo que només utilitzaríeu les versions C de cos, sin i tan. M

Senyor Pingüí 9

Cartell original
1 d'agost de 2008
  • 13 de maig de 2009
Puc tenir un exemple d'això, si us plau.

Gràcies

PhoneyDeveloper

set 2, 2008
  • 13 de maig de 2009
Codi: |_+_|
Hi ha alguna cosa més?

Proveu d'escriure això al terminal o busqueu-lo a Google

home pecat M

Senyor Pingüí 9

Cartell original
1 d'agost de 2008
  • 13 de maig de 2009
Però quan faig 'tan(1)' a xcode em retorna 1556013989!?!? Però el bronzejat d'1 és 0,017455... Què estic fent malament?

Gràcies R

Ron C

Jul 18, 2008
Àrea de Chicago
  • 13 de maig de 2009
Fa olor a un problema de tipus

MrPenguin9 va dir: Però quan faig 'tan(1)' a xcode em retorna 1556013989!?!? Però el bronzejat d'1 és 0,017455... Què estic fent malament?

Gràcies

1556013989? Pot ser que només estigui imprimint un valor amb format de coma flotant com a nombre enter sense la conversió de tipus?

D'on treus aquesta funció tan()? matemàtiques.h? Quin tipus retorna tan(), per exemple? Es necessiten radians o graus? En quin tipus emmagatzemeu el valor de retorn?

Vaig comprovar la pàgina de manual per a tan() i diu:
Codi: |_+_| Per tant... l'única funció que coincideix amb aquesta signatura pren un doble (conversió automàtica) i retorna un doble (també conversió automàtica) i pren radians.

Com veus el valor? Com és el teu codi?

EDIT: acabo de comprovar el valor de tan (1 radian) a Calculator.app - diu: 1,557408. Aleshores... per què creus que hauria de ser 0,017455? Aquest és el valor de tan(1 GRAU) M

Senyor Pingüí 9

Cartell original
1 d'agost de 2008
  • 13 de maig de 2009
Aquí el meu codi de MainView.m Code: |_+_| (Ah, i no sabia que tan(x) estava en radians.) Gràcies nois per ajudar! G

Guiyon

Mar 19, 2008
Cambridge, MA
  • 13 de maig de 2009
MrPenguin9 va dir: -(void)wakeFromNib {
Text.text = [NSString stringWithFormat'%d', tan(1)];
}

Hi ha el vostre problema, tan retorna un doble, però la cadena de format %d espera un nombre enter. Canviar el '%d' a '%lf' hauria de solucionar-ho. Escrivint 'man 3 printf' al terminal us donarà molta més informació sobre les cadenes de format d'estil printf que Apple (i moltes altres biblioteques) utilitzen; cerqueu la part que comença amb 'La cadena de format està composta per zero o més directives'. R

Ron C

Jul 18, 2008
Àrea de Chicago
  • 14 de maig de 2009
Una nota ràpida sobre la conversió automàtica i les estranyeses de coma flotant...

Guiyon va dir: Hi ha el teu problema, tan retorna un doble però la cadena de format %d espera un nombre enter. Canviar el '%d' a '%lf' hauria de solucionar-ho. Escrivint 'man 3 printf' al terminal us donarà molta més informació sobre les cadenes de format d'estil printf que Apple (i moltes altres biblioteques) utilitzen; cerqueu la part que comença amb 'La cadena de format està composta per zero o més directives'.

Aquestes conversions de tipus 'màgic' no es produeixen tret que el compilador sàpiga que n'hi hauria d'haver una. Un cas en què no ho sabrà és en codi com stringWithFormat: - realment no sap que hi hauria d'haver una conversió, de manera que passa alegrement un doble. Un cop comenceu a jugar amb tipus de coma flotant, heu de parar atenció a això.

Una altra nota breu sobre els tipus de coma flotant. No escriviu codi com: Codi: |_+_| El problema amb els tipus = i coma flotant és que és molt poc probable que siguin iguals. Fins i tot alguna cosa com: Codi: |_+_| A la pissarra, aquests números són els mateixos. Dins de l'ordinador, no cal que hi siguin. És estrany, però cal acostumar-s'hi. M

Senyor Pingüí 9

Cartell original
1 d'agost de 2008
  • 15 de maig de 2009
Ha funcionat.

Gràcies a tots per ajudar-me!