Buenos días, no sé si ya hay algún hilo antiguo sobre el tema, pero no lo vi. Necesito redondear el resultado de una operación en decimal al valor entero anterior o posterior en función de que el primer decimal sea mayor o menor que 5, en C para microcontroladores. Con esta precisión ya me estaría bien para lo que quiero obtener.
Me gustaría saber opciones de código eficiente para obtener el decimal de este resultado y compararlo con el valor constante 5. Teniendo en cuenta que el valor del resultado no siempre tiene 1 entero, puede que tenga decimales y centenas. Creo que esta peculiaridad lo hace algo más complejo que si fuera siempre el mismo orden de magnitud.
Por ejemplo:
Result = 5.8
fracción = 8
fracción >= 5 --> Result = 5 + 1 = 6
result = 27.3
fracción = 3
fraccion <= 5 --> Result = 27
Sugerencias para obtener la parte entera en una variable y la parte fraccionaria en otra? La parte entera creo que con guardarla en una variable tipo int se truncaría el decimal automáticamente, pero con respecto a la parte fraccionaria, cómo puedo obtenerla? Se me ocurre restar la parte entera del valor original en modo float y multiplicarlo x 10. Luego lo convertirlo con un cast a int. Pero no sé si tenéis una sugerencia más elegante.
Gracias por adelantado.
Saludos a todos!