MrPenguin9
Original plakat- 1. august 2008
- 13. mai 2009
Takk
SilentPanda
Moderator emeritus
- 8. oktober 2002
- Bambusskogen
- 13. mai 2009
MrPenguin9
Original plakat- 1. august 2008
- 13. mai 2009
Takk
Telefonutvikler
- 2. september 2008
- 13. mai 2009
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
Takk R
Ron C
- 18. juli 2008
- Chicago-området
- 13. mai 2009
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
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
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
Takk alle sammen for at dere hjelper meg!
Populære Innlegg