TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: manex_1987 en 21 de Abril de 2008, 04:46:18
-
Hola.
Uso C30 3.01. La cuestion es muy simple:
#define PHI_ENC 3.37
ZENBAT=90 (es un unsigned int)
Enc_Pultsu_Kop=(unsigned int)((float)ZENBAT/(float)PHI_ENC);
Y la respuesta deberia ser 26.7 no? Pues para nuestro amigo C30, es 18.53.
Alguna explicacion? Bug?
Me tienen harto.
Un saludo!
-
Ok.
Enc_Pultsu_Kop=(unsigned int)((float)ZENBAT)/((float)PHI_ENC);
Y funciona bien. Alguien puede explicarme el porqué?
Gracias!
-
Hola
Unas preguntas...
¿Qué tipo de variable es Enc_Pultsu_Kop?
Si le pides un casting de unsigned int, ¿porqué dices que debe salir 18.53, si un int no tiene decimales? :o
-
Hola
Unas preguntas...
¿Qué tipo de variable es Enc_Pultsu_Kop?
Si le pides un casting de unsigned int, ¿porqué dices que debe salir 18.53, si un int no tiene decimales? :o
ESO ESO ESO ESO !!!
Y como sabes que sale 18.53??? Que warnings obtienes en la compilación ???
-
Nop.
Enc_Pultsu_Kop es un INT.
He probado a debuggear ((float)ZENBAT/(float)PHI_ENC), y sale 18.53 , que casteando unsigned int, va a ser 18.
En cambio ((float)ZENBAT)/((float)PHI_ENC) si que da el valor correcto, que casteado va a ser 26
-
Pues hay una diferencia entre ambos códigos, pero los dos deben entregar el mismo resultado, 26.706.
Yo creo que es un bug. Hice pruebas con la calculadora y con el convertidor de ccs de float a entero y no encontré la conexión :?