Pan Tučňák9
Původní plakát- 1. srpna 2008
- 13. května 2009
dík
SilentPanda
Emeritní moderátor
- 8. října 2002
- Bambusový les
- 13. května 2009
Pan Tučňák9
Původní plakát- 1. srpna 2008
- 13. května 2009
dík
PhoneyDeveloper
- 2. září 2008
- 13. května 2009
je ještě něco?
Zkuste to napsat do terminálu nebo to vygooglovat
člověk hřích M
Pan Tučňák9
Původní plakát- 1. srpna 2008
- 13. května 2009
dík R
Ron C
- 18. července 2008
- Chicago-oblast
- 13. května 2009
MrPenguin9 řekl: Ale když udělám 'tan(1)' v xcode, vrátí mi to 1556013989!?!? Ale opálení 1 je 0,017455... Co dělám špatně?
dík
1556013989? Může to být pouze tisk hodnoty ve formátu s plovoucí desetinnou čárkou jako celé číslo bez převodu typu?
Odkud získáváte tuto funkci tan()? math.h? Jaký typ vrátí například tan()? Vyžaduje to radiány nebo stupně? Do jakého typu ukládáte návratovou hodnotu?
Zkontroloval jsem manuálovou stránku pro tan() a říká:
Kód: |_+_| Takže.... jediná funkce, která odpovídá tomuto podpisu, bere dvojnásobek (automatický převod) a vrací dvojnásobek (také automatický převod) a bere radiány.
Jak se díváte na hodnotu? Jak vypadá váš kód?
EDIT: Právě jsem zkontroloval hodnotu tan (1 radián) v Calculator.app - říká: 1,557408. Takže... proč si myslíte, že by to mělo být 0,017455? To je hodnota opálení (1 STUPEŇ) M
Pan Tučňák9
Původní plakát- 1. srpna 2008
- 13. května 2009
Guiyon
- 19. dubna 2008
- Cambridge, MA
- 13. května 2009
MrPenguin9 řekl: -(void)awakeFromNib {
Text.text = [NSString stringWithFormat'%d', tan(1)];
}
Zde je váš problém, tan vrací double, ale formátovací řetězec %d očekává celé číslo. Změna '%d' na '%lf' by to měla vyřešit. Zadáním 'man 3 printf' na terminálu získáte mnohem více informací o řetězcích formátu ve stylu printf, které Apple (a spousta dalších knihoven) používá; vyhledejte část, která začíná „Formátovací řetězec se skládá z nula nebo více direktiv“ R
Ron C
- 18. července 2008
- Chicago-oblast
- 14. května 2009
Guiyon řekl: To je váš problém, tan vrací double, ale formátovací řetězec %d očekává celé číslo. Změna '%d' na '%lf' by to měla vyřešit. Zadáním 'man 3 printf' na terminálu získáte mnohem více informací o řetězcích formátu ve stylu printf, které Apple (a spousta dalších knihoven) používá; vyhledejte část, která začíná „Formátovací řetězec se skládá z nula nebo více direktiv“
K těmto „magickým“ převodům typu nedochází, pokud kompilátor neví, že by nějaká měla být. Jeden případ, kdy to nebude vědět, je v kódu jako stringWithFormat: - ve skutečnosti neví, že by mělo dojít ke konverzi, takže to vesele prochází double. Jakmile začnete hrát s typy s plovoucí desetinnou čárkou, musíte tomu věnovat pozornost.
Další krátká poznámka o typech s plovoucí desetinnou čárkou. Nepište kód jako: Kód: |_+_| Problém s typy = a s plovoucí desetinnou čárkou je v tom, že je velmi nepravděpodobné, že se budou rovnat. Dokonce i něco jako: Kód: |_+_| Na vaší tabuli jsou tato čísla stejná. Uvnitř počítače nemusí být. Je to zvláštní, ale musíte si na to zvyknout. M
Pan Tučňák9
Původní plakát- 1. srpna 2008
- 15. května 2009
Děkuji vám všem, že mi pomáháte!
Populární Příspěvky