MrPenguin9
Poster original- 1 de agosto de 2008
- 13 de mayo de 2009
Gracias
SilentPanda
Moderador emérito
- Oct 8, 2002
- El bosque de bambú
- 13 de mayo de 2009
MrPenguin9
Poster original- 1 de agosto de 2008
- 13 de mayo de 2009
Gracias
PhoneyDeveloper
- Sep 2, 2008
- 13 de mayo de 2009
x = sin(y);
Hay algo mas
Intente escribir esto en la terminal o busque en Google
hombre pecado METRO
MrPenguin9
Poster original- 1 de agosto de 2008
- 13 de mayo de 2009
Gracias R
Ron C
- Jul 18, 2008
- Área de Chicago
- 13 de mayo de 2009
MrPenguin9 dijo: ¡Pero cuando hago 'tan (1)' en xcode, me devuelve 1556013989!?!? Pero el bronceado de 1 es 0.017455 ... ¿Qué estoy haciendo mal?
Gracias
1556013989? ¿Podría estar imprimiendo un valor con formato de punto flotante como un número entero sin la conversión de tipo?
¿De dónde obtiene esta función tan ()? matemáticas.h? ¿Qué tipo devuelve tan (), por ejemplo? ¿Toma radianes o grados? ¿En qué tipo estás almacenando el valor de retorno?
Revisé la página de manual de tan () y dice:
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).
Entonces ... la única función que coincide con esa firma toma un doble (conversión automática) y devuelve un doble (también conversión automática) y toma radianes. ¿Cómo ve el valor? ¿Cómo es tu código?
EDITAR: Acabo de verificar el valor de tan (1 radianes) en Calculator.app, dice: 1.557408. Entonces ... ¿por qué crees que debería ser 0.017455? Ese es el valor de bronceado (1 GRADO) METRO
MrPenguin9
Poster original- 1 de agosto de 2008
- 13 de mayo de 2009
#import 'MainView.h' @implementation MainView -(void)awakeFromNib { Text.text = [NSString stringWithFormat:@'%d', tan(1)]; } @end
(Oh, y no sabía que tan (x) estaba en radianes.) ¡Gracias a todos por ayudar! GRAMO Guiyon
- Mar 19, 2008
- Cambridge, MA
- 13 de mayo de 2009
MrPenguin9 dijo: - (void) awakeFromNib {
Text.text = [NSString stringWithFormat '% d', tan (1)];
}
Ahí está su problema, tan devuelve un doble pero la cadena de formato% d espera un número entero. Cambiar el '% d' a '% lf' debería arreglar eso. Si escribe 'man 3 printf' en la terminal, obtendrá mucha más información sobre las cadenas de formato de estilo printf que utiliza Apple (y muchas otras bibliotecas); busque la parte que comienza con 'La cadena de formato se compone de cero o más directivas' R
Ron C
- Jul 18, 2008
- Área de Chicago
- 14 de mayo de 2009
Guiyon dijo: Ahí está tu problema, tan devuelve un doble pero la cadena de formato% d espera un número entero. Cambiar el '% d' a '% lf' debería arreglar eso. Si escribe 'man 3 printf' en la terminal, obtendrá mucha más información sobre las cadenas de formato de estilo printf que utiliza Apple (y muchas otras bibliotecas); busque la parte que comienza con 'La cadena de formato se compone de cero o más directivas'
Estas conversiones de tipo 'mágico' no ocurren a menos que el compilador sepa que debería haber una. Un caso en el que no lo sabrá es en un código como stringWithFormat: - realmente no sabe que debería haber una conversión, por lo que felizmente pasa a lo largo de un doble. Una vez que comiences a jugar con tipos de punto flotante, debes prestar atención a eso.
Otra breve nota sobre los tipos de coma flotante. No escriba código como: Código:
double a,b; ... if (a == b) { ...
El problema con los tipos = y de punto flotante es que es muy poco probable que sean iguales. Incluso 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) { ...
En su pizarra, estos números son los mismos. Dentro de la computadora, no tienen por qué estarlo. Es extraño, pero tienes que acostumbrarte. METRO MrPenguin9
Poster original- 1 de agosto de 2008
- 15 de mayo de 2009
¡Gracias a todos por ayudarme!
Entradas Populares