Autor Tema: Extraer parte decimal de un flotante  (Leído 1204 veces)

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

Desconectado vapj9609

  • PIC10
  • *
  • Mensajes: 2
    • https://tech2app.xyz/
Extraer parte decimal de un flotante
« en: 05 de Septiembre de 2021, 19:41:23 »
Buenos días, no estoy seguro si ya tengo un viejo hilo sobre el tema, pero no lo he visto. En el microcontrolador C, el resultado de la operación del valor predeterminado 10 debe redondearse por los valores enteros anteriores y anteriores según si el primero es el valor predeterminado 10 o más o este 5. Con esta precisión estaré bien con lo que quiero conseguir.
Quiero saber una opción de código eficiente para obtener la base 10 de este resultado y compararlo con el valor constante 5. Teniendo en cuenta que el valor resultante no siempre tiene un entero de 1, puede tener números decimales y cientos. Creo que esta especificidad será algo más complicada que si estuviera siempre en el mismo orden de magnitud.

Por ejemplo:
Resultado=5.8
Fracción=8
Fracción> = 5 Result > Resultado = 5 + 1 = 6
Resultado=27.3
Fracción=3
Fracción< = 5 Result > Resultado = 27


¿Hay alguna sugerencia de obtener parte entera en una variable y parte fraccionaria en otra? La parte entera corta automáticamente el decimal cuando se almacena en una variable int, pero ¿cómo puedo obtenerlo cuando se trata de la parte decimal? En el modo de punto flotante, se puede pensar en restar toda la parte del valor original y luego multiplicarlo por x10. Luego lanzarlo y convertirlo a int. Pero no estoy seguro si tienes sugerencias más elegantes.

Gracias de antemano.
Saludos a todos!

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:Extraer parte decimal de un flotante
« Respuesta #1 en: 05 de Septiembre de 2021, 20:22:28 »
Lo que veo es que querés redondear al entero mas cercano de la manera mas complicada.

Código: [Seleccionar]
   float x ;
   int n ;
  ................
    n=x+.5  ;  // redondea al mas cercano