MrPenguin9
Original plakat- 1. august 2008
- 13. maj 2009
Tak
SilentPanda
Moderator emeritus
- 8. oktober 2002
- Bambusskoven
- 13. maj 2009
MrPenguin9
Original plakat- 1. august 2008
- 13. maj 2009
Tak
Telefonudvikler
- 2. september 2008
- 13. maj 2009
Er der noget mere?
Prøv at skrive dette i terminalen eller google det
menneske synd M
MrPenguin9
Original plakat- 1. august 2008
- 13. maj 2009
Tak R
Ron C
- 18. juli 2008
- Chicago-området
- 13. maj 2009
MrPenguin9 sagde: Men når jeg laver 'tan(1)' i xcode giver det mig 1556013989 tilbage!?!? Men tan på 1 er 0,017455... Hvad gør jeg forkert?
Tak
1556013989? Det er måske bare at udskrive en flydende komma-formateret værdi som et heltal uden typekonvertering?
Hvorfra får du denne tan() funktion? matematik.h? Hvilken type returnerer tan(), for eksempel? Tager det radianer eller grader? Hvilken type gemmer du returværdien i?
Jeg tjekkede man-siden for tan(), og den siger:
Kode: |_+_| Så... den eneste funktion, der matcher den signatur, tager en dobbelt (automatisk konvertering) og returnerer en dobbelt (også automatisk konvertering) og tager radianer.
Hvordan ser du på værdien? Hvordan ser din kode ud?
EDIT: Jeg har lige tjekket værdien af tan(1 radian) i Calculator.app - der står: 1.557408. Så... hvorfor tror du det skal være 0,017455? Det er værdien af tan(1 GRAD) M
MrPenguin9
Original plakat- 1. august 2008
- 13. maj 2009
Guiyon
- 19. april 2008
- Cambridge, MA
- 13. maj 2009
MrPenguin9 sagde: -(void)awakeFromNib {
Text.text = [NSString stringWithFormat'%d', tan(1)];
}
Der er dit problem, tan returnerer en dobbelt, men %d-formatstrengen forventer et heltal. Ændring af '%d' til '%lf' burde løse det. Hvis du skriver 'man 3 printf' i terminalen, får du meget mere information om de printf-formatstrenge, som Apple (og mange andre biblioteker) bruger; se efter den del, der starter med 'Formatstrengen er sammensat af nul eller flere direktiver' R
Ron C
- 18. juli 2008
- Chicago-området
- 14. maj 2009
Guiyon sagde: Der er dit problem, tan returnerer en dobbelt, men %d-formatstrengen forventer et heltal. Ændring af '%d' til '%lf' burde løse det. Hvis du skriver 'man 3 printf' i terminalen, får du meget mere information om de printf-formatstrenge, som Apple (og mange andre biblioteker) bruger; se efter den del, der starter med 'Formatstrengen er sammensat af nul eller flere direktiver'
Disse 'magiske' konverteringer forekommer ikke, medmindre compileren ved, at der burde være en. Et tilfælde, hvor det ikke vil vide det, er i kode som stringWithFormat: - det ved ikke rigtig, at der skulle være en konvertering, så det passerer lystigt en double. Når du begynder at spille med typer med flydende komma, skal du være opmærksom på det.
Endnu en kort bemærkning om typer med flydende komma. Skriv ikke kode som: Kode: |_+_| Problemet med = og flydende komma typer er, at de er meget usandsynligt at være ens. Selv noget som: Kode: |_+_| På din tavle er disse tal de samme. Inde i computeren behøver de ikke at være det. Det er mærkeligt, men du skal vænne dig til det. M
MrPenguin9
Original plakat- 1. august 2008
- 15. maj 2009
Tak til jer alle for at hjælpe mig!
Populære Indlæg