MrPenguin9
Pôster original- 1 ° de agosto de 2008
- 13 de maio de 2009
Obrigado
SilentPanda
Moderador emérito
- 8 de outubro de 2002
- A floresta de bambu
- 13 de maio de 2009
MrPenguin9
Pôster original- 1 ° de agosto de 2008
- 13 de maio de 2009
Obrigado
PhoneyDeveloper
- 2 de setembro de 2008
- 13 de maio de 2009
x = sin(y);
Existe algo mais?
Tente digitar no terminal ou google
homem pecado M
MrPenguin9
Pôster original- 1 ° de agosto de 2008
- 13 de maio de 2009
Obrigado R
Ron C
- 18 de julho de 2008
- Área de Chicago
- 13 de maio de 2009
MrPenguin9 disse: Mas quando eu faço 'tan (1)' no xcode, ele me retorna 1556013989!?!? Mas o bronzeado de 1 é 0,017455 ... O que estou fazendo de errado?
Obrigado
1556013989? Pode ser apenas imprimir um valor formatado em ponto flutuante como um inteiro sem a conversão de tipo?
De onde você está obtendo essa função tan ()? math.h? Que tipo tan (), por exemplo, retorna? Leva radianos ou graus? Em que tipo você está armazenando o valor de retorno?
Verifiquei a página de manual de tan () e ela diz:
Código:
#include double tan(double x); long double tanl(long double x); float tanf(float x); DESCRIPTION The tan() function computes the tangent of x (measured in radians).
Então .... a única função que corresponde a essa assinatura leva um duplo (conversão automática) e retorna um duplo (também conversão automática) e leva radianos. Como você está vendo o valor? Qual é a aparência do seu código?
EDIT: Acabei de verificar o valor de tan (1 radiano) em Calculator.app - diz: 1.557408. Então ... por que você acha que deveria ser 0,017455? Esse é o valor de tan (1 GRAU) M
MrPenguin9
Pôster original- 1 ° de agosto de 2008
- 13 de maio de 2009
#import 'MainView.h' @implementation MainView -(void)awakeFromNib { Text.text = [NSString stringWithFormat:@'%d', tan(1)]; } @end
(Ah, e eu não sabia que tan (x) estava em radianos.) Obrigado pessoal por ajudar! G Guiyon
- 19 de abril de 2008
- Cambridge, MA
- 13 de maio de 2009
MrPenguin9 disse: - (vazio) awakeFromNib {
Text.text = [NSString stringWithFormat '% d', tan (1)];
}
Aí está o seu problema, tan retorna um double, mas a string de formato% d espera um inteiro. Alterar o '% d' para '% lf' deve corrigir isso. Digitar 'man 3 printf' no terminal lhe dará muito mais informações sobre as strings de formato no estilo printf que a Apple (e muitas outras bibliotecas) usa; procure a parte que começa com 'A string de formato é composta de zero ou mais diretivas' R
Ron C
- 18 de julho de 2008
- Área de Chicago
- 14 de maio de 2009
Guiyon disse: Esse é o seu problema, tan retorna um double, mas a string de formato% d espera um inteiro. Alterar o '% d' para '% lf' deve corrigir isso. Digitar 'man 3 printf' no terminal lhe dará muito mais informações sobre as strings de formato no estilo printf que a Apple (e muitas outras bibliotecas) usa; procure a parte que começa com 'A string de formato é composta de zero ou mais diretivas'
Essas conversões de tipo 'mágico' não ocorrem a menos que o compilador saiba que deveria haver um. Um caso em que ele não saberá está em um código como stringWithFormat: - ele não sabe realmente que deve haver uma conversão, então, felizmente, passa adiante um duplo. Depois de começar a brincar com tipos de ponto flutuante, você precisa prestar atenção a isso.
Outra breve observação sobre os tipos de ponto flutuante. Não escreva código como: Code:
double a,b; ... if (a == b) { ...
O problema com os tipos = e de ponto flutuante é que é muito improvável que sejam iguais. Mesmo algo como: Código: float a,b,c,prod1,prod2; ... // compute values for a, b, and c prod1 = a*b*c; prod2 = c*b*a; if (prod1 == prod2) { ...
No quadro branco, esses números são iguais. Dentro do computador, eles não precisam estar. É estranho, mas você precisa se acostumar. M MrPenguin9
Pôster original- 1 ° de agosto de 2008
- 15 de maio de 2009
Obrigado a todos por me ajudar!
Publicações Populares