Fóra

iOS Jak používáte sin, cos a tan?

M

Pan Tučňák9

Původní plakát
1. srpna 2008
  • 13. května 2009
Jak používáte sin, cos a tan v iPhone sdk? A také jak používáte jejich inverzní?

dík

SilentPanda

Emeritní moderátor
8. října 2002
Bambusový les


  • 13. května 2009
Hádám, že byste použili pouze verze C cos, sin a tan. M

Pan Tučňák9

Původní plakát
1. srpna 2008
  • 13. května 2009
Můžu mít příklad, prosím.

dík

PhoneyDeveloper

2. září 2008
  • 13. května 2009
Kód: |_+_|
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
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 R

Ron C

18. července 2008
Chicago-oblast
  • 13. května 2009
Zavání problém s typem

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
Zde můj kód z MainView.m Kód: |_+_| (Aha, a to jsem nevěděl, že tan(x) je v radiánech.) Děkuji vám za pomoc! G

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
Rychlá poznámka o automatické konverzi a podivnosti s plovoucí desetinnou čárkou...

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
Fungovalo to.

Děkuji vám všem, že mi pomáháte!