Форуми

iOS Как използвате sin, cos и tan?

М

MrPenguin9

Оригинален плакат
1 август 2008 г
  • 13 май 2009 г
Как използвате sin, cos и tan в iPhone sdk? И също как да използвате обратното от тях?

Благодаря

SilentPanda

Почетен модератор
8 октомври 2002 г
Бамбуковата гора


  • 13 май 2009 г
Предполагам, че просто ще използвате C версиите на cos, sin и tan. М

MrPenguin9

Оригинален плакат
1 август 2008 г
  • 13 май 2009 г
Мога ли да имам пример за това, моля.

Благодаря

PhoneyDeveloper

2 септември 2008 г
  • 13 май 2009 г
Код: |_+_|
Има ли нещо повече?

Опитайте да напишете това в терминала или го гугъл

човек грях М

MrPenguin9

Оригинален плакат
1 август 2008 г
  • 13 май 2009 г
Но когато направя 'tan(1)' в xcode, той ми връща 1556013989!?!? Но тенът на 1 е 0,017455... Какво правя нередно?

Благодаря Р

Рон С

18 юли 2008 г
Район Чикаго
  • 13 май 2009 г
Мирише на проблем с типа

MrPenguin9 каза: Но когато направя 'tan(1)' в xcode, той ми връща 1556013989!?!? Но тенът на 1 е 0,017455... Какво правя нередно?

Благодаря

1556013989? Може просто да отпечатва стойност, форматирана с плаваща запетая, като цяло число без преобразуването на типа?

Откъде получавате тази функция tan()? math.h? Какъв тип връща tan(), например? Отнема ли радиани или градуси? В какъв тип съхранявате връщаната стойност?

Проверих man страницата за tan() и тя казва:
Код: |_+_| Така че.... единствената функция, която съответства на този подпис, взема двойно (автоматично преобразуване) и връща двойно (също автоматично преобразуване) и приема радиани.

Как гледате на стойността? Как изглежда вашият код?

РЕДАКТИРАНЕ: Току-що проверих стойността на tan (1 радиан) в Calculator.app - пише: 1,557408. И така... защо мислиш, че трябва да е 0,017455? Това е стойността на тен (1 ГРАДУС) М

MrPenguin9

Оригинален плакат
1 август 2008 г
  • 13 май 2009 г
Ето моя код от MainView.m Code: |_+_| (О, и не знаех, че tan(x) е в радиани.) Благодаря ви момчета за помощта! г

Guiyon

19 април 2008 г
Кеймбридж, Масачузетс
  • 13 май 2009 г
MrPenguin9 каза: -(void)awakeFromNib {
Text.text = [NSString stringWithFormat'%d', tan(1)];
}

Ето вашият проблем, tan връща двойно, но низът във формат %d очаква цяло число. Промяната на '%d' на '%lf' трябва да поправи това. Въвеждането на 'man 3 printf' на терминала ще ви даде много повече информация за форматните низове в стил printf, които Apple (и много други библиотеки) използват; потърсете частта, която започва с „Форматният низ е съставен от нула или повече директиви“ Р

Рон С

18 юли 2008 г
Район Чикаго
  • 14 май 2009 г
Бърза бележка за автоматичното преобразуване и странностите с плаваща запетая...

Guiyon каза: Това е вашият проблем, tan връща двойно, но форматният низ %d очаква цяло число. Промяната на '%d' на '%lf' трябва да поправи това. Въвеждането на 'man 3 printf' на терминала ще ви даде много повече информация за форматните низове в стил printf, които Apple (и много други библиотеки) използват; потърсете частта, която започва с „Форматният низ е съставен от нула или повече директиви“

Тези 'магически' преобразувания на тип не се случват, освен ако компилаторът не знае, че трябва да има такова. Един случай, в който няма да знае, е в код като stringWithFormat: - той всъщност не знае, че трябва да има преобразуване, така че весело предава двойна. След като започнете да играете с типове с плаваща запетая, трябва да обърнете внимание на това.

Друга кратка бележка за типовете с плаваща запетая. Не пишете код като: Код: |_+_| Проблемът с типовете = и с плаваща запетая е, че е малко вероятно те да бъдат равни. Дори нещо като: Код: |_+_| На вашата бяла дъска тези числа са еднакви. Не е задължително да са вътре в компютъра. Странно е, но трябва да свикнеш. М

MrPenguin9

Оригинален плакат
1 август 2008 г
  • 15 май 2009 г
Проработи.

Благодаря на всички, че ми помогнахте!