MrPenguin9
Manifesto originale- 1 agosto 2008
- 13 maggio 2009
Grazie
SilentPanda
Moderatore emerito
- 8 ottobre 2002
- La foresta di bambù
- 13 maggio 2009
MrPenguin9
Manifesto originale- 1 agosto 2008
- 13 maggio 2009
Grazie
PhoneyDeveloper
- 2 settembre 2008
- 13 maggio 2009
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
Grazie R
Ron C
- 18 luglio 2008
- Chicago-area
- 13 maggio 2009
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
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
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
Grazie a tutti per avermi aiutato!
Messaggi Popolari