Autor Tema: Operaciones en punto flotante  (Leído 2718 veces)

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

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3216
Operaciones en punto flotante
« 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.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Operaciones en punto flotante
« Respuesta #1 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?

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Operaciones en punto flotante
« Respuesta #2 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
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3216
Re: Operaciones en punto flotante
« Respuesta #3 en: 25 de Agosto de 2006, 18:59:26 »
Gracias por la rspuesta, haciendo eso que me habeis dicho se ha solucionado.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Operaciones en punto flotante
« Respuesta #4 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
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)