Autor Tema: problemilla tonto con CCS  (Leído 4684 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Nash7

  • PIC10
  • *
  • Mensajes: 17
problemilla tonto con CCS
« en: 02 de Septiembre de 2005, 07:58:00 »
La pregunta es, alguien sabe como puedo visualizar la parte entera de una variable Float?. En mi programa se hacen unos cálculos donde el resultado va de 30 a 85 (aprox) con números decimales, y yo quiero sacar mediante un puerto la parte entera del resultado para poder comprobar los cálculos... ¿como lo hago? si asigno directamente la variable Float a una Integer, la integer se quedaría con la parte entera?, o vería truncado su resultado a algo inesperado?

Gracias
Divertido

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: problemilla tonto con CCS
« Respuesta #1 en: 02 de Septiembre de 2005, 10:23:00 »
Hola Nash7!!!haber, si solo quieres quedarte con la parte entera aplicale un integer como bien dices, no hara cosas raras simplemente se kedara con la parte entera, aqui un codigo de ejemplo:

Codigo:
////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                     2/Septiembre/05            
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#define use_portb_lcd TRUE         //definir portb lcd
#include<lcd.c>                  //libreria manejo lcd
      
///PROGRAMA
void main(void)
{
   float phi=1.618;                   //divina proporcion en float
   int x;                                    //int para ver que se keda con parte entera
   
   lcd_init();         //inicializa lcd
   
   x=phi;                                //me kedo con parte entera
   printf(lcd_putc,"%d %f",x,phi);   //muestra por pantalla el mensaje  
}


No se si esto es lo que preguntabas, pero vamos que funciona!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: problemilla tonto con CCS
« Respuesta #2 en: 02 de Septiembre de 2005, 10:40:00 »
Creo que hay funciones para redondear, que ahora no recuerdo de memoria, miro el manual del CCS y si lo veo edito el post. Es mejor que así, que lo que hace es truncar no vszener¿?
Si juegas contra el mejor, pierdes como los demás.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: problemilla tonto con CCS
« Respuesta #3 en: 02 de Septiembre de 2005, 10:44:00 »
Exacto radon, con el integer lo que haces es truncar la variable, es decir solamente te kedas con la parte entera, si declaras un numero float como el ejemplo que puse anteriormente: float phi=1.618; y declaras una variable entera int x; y despues en el transcurso del programa haces: x=phi; lo que se produce es un "truncamiento" de la variable phi, solamente te kedas con la parte entera es decir: x=1

Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: problemilla tonto con CCS
« Respuesta #4 en: 02 de Septiembre de 2005, 10:51:00 »
Ah!!!se me olvidaba joer! para redondear existe funciones ya declaradas en el CCS:

CEIL() -> esta es para redondear hacia arriba: x= CEIL(12.67); es x= 13.00
FLOOR() ->esta para redondear hacia abajo : x= FLOOR(12.67; es x= 12.00

Las dos  incluidas en la libreria MATH.H

Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Nash7

  • PIC10
  • *
  • Mensajes: 17
RE: problemilla tonto con CCS
« Respuesta #5 en: 02 de Septiembre de 2005, 12:51:00 »
mil gracias, todo en orden afortunadamente, me ha venido dibuti esas funciones de redondeo, Je je!!Giño