Forum

iOS Come usi sin, cos e tan?

m

MrPenguin9

Manifesto originale
1 agosto 2008
  • 13 maggio 2009
Come usi sin, cos e tan nell'iPhone SDK? E anche come usi l'inverso di loro?

Grazie

SilentPanda

Moderatore emerito
8 ottobre 2002
La foresta di bambù


  • 13 maggio 2009
Immagino che useresti solo le versioni C di cos, sin e tan. m

MrPenguin9

Manifesto originale
1 agosto 2008
  • 13 maggio 2009
Posso avere un esempio di questo per favore.

Grazie

PhoneyDeveloper

2 settembre 2008
  • 13 maggio 2009
Codice: |_+_|
C'è qualcosa di più?

Prova a digitarlo nel terminale o cercalo su Google

uomo peccato m

MrPenguin9

Manifesto originale
1 agosto 2008
  • 13 maggio 2009
Ma quando eseguo 'tan (1)' in xcode mi restituisce 1556013989!?!? Ma l'abbronzatura di 1 è 0,017455... Cosa sto sbagliando?

Grazie R

Ron C

18 luglio 2008
Chicago-area
  • 13 maggio 2009
Puzza come un problema di tipo

MrPenguin9 ha detto: Ma quando eseguo 'tan (1)' in xcode mi restituisce 1556013989!?!? Ma l'abbronzatura di 1 è 0,017455... Cosa sto sbagliando?

Grazie

1556013989? Potrebbe semplicemente stampare un valore formattato a virgola mobile come numero intero senza la conversione del tipo?

Da dove prendi questa funzione tan()? math.h? Che tipo restituisce tan(), ad esempio? Ci vogliono radianti o gradi? In che tipo stai memorizzando il valore restituito?

Ho controllato la pagina man per tan() e dice:
Codice: |_+_| Quindi... l'unica funzione che corrisponde a quella firma prende un double (conversione automatica) e restituisce un double (anch'esso conversione automatica) e prende i radianti.

Come stai vedendo il valore? Che aspetto ha il tuo codice?

EDIT: ho appena controllato il valore di tan (1 radiante) in Calculator.app - dice: 1.557408. Quindi... perché pensi che dovrebbe essere 0,017455? Questo è il valore di tan (1 GRADO) m

MrPenguin9

Manifesto originale
1 agosto 2008
  • 13 maggio 2009
Qui il mio codice da MainView.m Codice: |_+_| (Oh, e non sapevo che tan(x) fosse in radianti.) Grazie ragazzi per l'aiuto! G

Guiyon

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

C'è il tuo problema, tan restituisce un doppio ma la stringa di formato %d si aspetta un numero intero. La modifica di '%d' in '%lf' dovrebbe risolvere il problema. Digitando 'man 3 printf' sul terminale otterrai molte più informazioni sulle stringhe di formato in stile printf utilizzate da Apple (e molte altre librerie); cerca la parte che inizia con 'La stringa di formato è composta da zero o più direttive' R

Ron C

18 luglio 2008
Chicago-area
  • 14 maggio 2009
Una breve nota sulla conversione automatica e le stranezze in virgola mobile...

Guiyon ha detto: C'è il tuo problema, tan restituisce un doppio ma la stringa di formato %d si aspetta un numero intero. La modifica di '%d' in '%lf' dovrebbe risolvere il problema. Digitando 'man 3 printf' sul terminale otterrai molte più informazioni sulle stringhe di formato in stile printf utilizzate da Apple (e molte altre librerie); cerca la parte che inizia con 'La stringa di formato è composta da zero o più direttive'

Queste conversioni di tipo 'magico' non si verificano a meno che il compilatore non sappia che dovrebbe essercene uno. Un caso in cui non lo saprà è nel codice come stringWithFormat: - non sa davvero che dovrebbe esserci una conversione, quindi passa allegramente lungo un doppio. Una volta che inizi a giocare con i tipi a virgola mobile, devi prestare attenzione a questo.

Un'altra breve nota sui tipi a virgola mobile. Non scrivere codice come: Codice: |_+_| Il problema con i tipi = e in virgola mobile è che è molto improbabile che siano uguali. Anche qualcosa come: Codice: |_+_| Sulla tua lavagna, questi numeri sono gli stessi. All'interno del computer, non devono essere. È strano, ma devi abituarti. m

MrPenguin9

Manifesto originale
1 agosto 2008
  • 15 maggio 2009
Ha funzionato.

Grazie a tutti per avermi aiutato!