TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micro_pepe en 25 de Agosto de 2006, 14:28:43

Título: Operaciones en punto flotante
Publicado por: micro_pepe en 25 de Agosto de 2006, 14:28:43
Hola, estoy haciendo esto en CCS, y no se porque no me da un resultado redondeado resultante de la operacion con decimales, sino multiplos de 5:

Código: [Seleccionar]
media=suma/25;
media=ceil(media*5);
Temperatura=media;

"media" es una variable tipo float.
"suma" es tipo long.
"Temperatura" es tipo long.

"suma" contiene la suma del resultado del ADC de 25 valores. Y 5 es la constante para adaptar el resultado del voltaje que entrega un LM35.

Agradeceria que alguien me dijese como se hace para que en las operaciones se tengan en cuenta los decimales, y no solo me de los multiplos de 5 del valor entero.

Saludos y gracias.
Título: Re: Operaciones en punto flotante
Publicado por: maunix en 25 de Agosto de 2006, 14:53:18
Hola, estoy haciendo esto en CCS, y no se porque no me da un resultado redondeado resultante de la operacion con decimales, sino multiplos de 5:

Código: [Seleccionar]
media=suma/25;
media=ceil(media*5);
Temperatura=media;

"media" es una variable tipo float.
"suma" es tipo long.
"Temperatura" es tipo long.

"suma" contiene la suma del resultado del ADC de 25 valores. Y 5 es la constante para adaptar el resultado del voltaje que entrega un LM35.

Agradeceria que alguien me dijese como se hace para que en las operaciones se tengan en cuenta los decimales, y no solo me de los multiplos de 5 del valor entero.

Saludos y gracias.


Y si pruebas 'castear' tus variables?

Código: C
  1. media=(float) suma / 25.0;
  2. media=(float) ceil(media*5.0);
  3. Temperatura=media;

De todas formas si 'ceil' redondea el dato... no hay mucho para hacer ya que por mas que castees a float dicha función el resultado proviene del cálculo interno que haga. 

Además ¿qué tipo de parámetros recibe? ¿Qué hace esa función?

Título: Re: Operaciones en punto flotante
Publicado por: jfh900 en 25 de Agosto de 2006, 14:58:49
La solución te la ha dado maunix, sustituye:

media=suma/25;
media=ceil(media*5);

Por:

media=suma/25.0;
media=ceil(media*5.0);

Un saludo
Título: Re: Operaciones en punto flotante
Publicado por: micro_pepe en 25 de Agosto de 2006, 18:59:26
Gracias por la rspuesta, haciendo eso que me habeis dicho se ha solucionado.
Título: Re: Operaciones en punto flotante
Publicado por: maunix en 25 de Agosto de 2006, 23:13:28
Gracias por la rspuesta, haciendo eso que me habeis dicho se ha solucionado.

Me alegro que se haya solucionado y eso es importante.

Aún más imoprtante es que hayas comprendido donde estaba el problema así si te ocurre algo similar otra vez... lo puedas solucionar rápidamente sobre la marcha.

Saludos