TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Enigma en 24 de Junio de 2010, 14:16:34
-
Hola muy buenas tardes... Una preguntita a los foristas más experimentados... De casualidad existe alguna instrucción en C que me redondee un real a su entero más próximo...?
Ejemplo:
1,5 lo lleve a 2
2,3 lo lleve a 2
0,8 lo lleve a 1
4,1 lo lleve a 4
Gracias...
Atte: Enigma... La llanerita de Guayana :D
-
Hola llanera, fijate si tu compilador soporta esta función:
floor
Deberia estar incluido en math.h
Saludos !
-
Si ya la probé pero el PICC me da error!!!! esa no la soporta!
Atte: Enigma... La llanerita de Guayana :D
-
Otra pregunta... el PCW (V. 4.0) no soporta la libreria match.h???
-
Te has fijado en la ayuda???
Ahi viene definidio FLOOR y demas funciones.
-
si ya lo visite pero cuando coloco esa instrucción en la ayuda del picc no me arroja ningun resultado.... me sale como si no existiera.....
Atte: Enigma... La llanerita de Guayana ;-)
-
Revisa lo que comenta nocturno de +.5
Tambien lo puedes checar aqui
http://www.ccsinfo.com/forum/viewtopic.php?t=4300&highlight=floor
-
si tienes un valor real, estara definida la variable como float, si quieres redondearlo podrias hacer un cast a unsigned int, o creo tambien a unsigned char.
float fvalor;
unsigned int uivalor;
fvalor = 2,4;
uivalor = unsigned int(fvalor);
puede que cuando compiles te de la advertencia de que pierdes datos con esta instruccion, pero justamente es lo que quieres :D
con esto creo que te queda uivalor = 2
-
Si ya chequee toda esa info.... pero cuando trato de implementarla a PICC, pues me aparece como desconocido... cuando declaro la librería math.h el compilador me da error diciendo que no la reconoce....... además que no me reconoce la instrucción floor.... :(
Atte: Enigma... La llanerita de Guayana ;-)
-
Hola, el CCS soporta la librería math.h y allí las funciones floor y ceil.
De la ayuda del CCS:
floor( )
--------------------------------------------------------------------------------
Syntax:
result = floor (value)
Parameters:
value is a float
Returns:
result is a float
Function:
Computes the greatest integer value not greater than the argument. Floor (12.67) is 12.00.
Availability:
All devices.
Requires:
#include <math.h>
ceil( )
--------------------------------------------------------------------------------
Syntax:
result = ceil (value)
Parameters:
value is a float
Returns:
A float
Function:
Computes the smallest integer value greater than the argument. CEIL(12.67) is 13.00.
Availability:
All devices
Requires:
#include <math.h>
Saludos
-
o.k willynovi... en dado caso de no funcionar el floor trataré de implementar tu sugerencia... gracias por el aporte!
Atte: Enigma... La llanerita de Guayana :D
-
o.k ya lo configure y el CCS ya me lo acepto, ya me corrio wiiiiiiiiii..... :lol: ahora voy a ver si funciona de verdad.... ahorita traigo resultados....
Atte: Enigma... La llanerita de Guayana :D
-
Hola muy buenas tardes... Una preguntita a los foristas más experimentados... De casualidad existe alguna instrucción en C que me redondee un real a su entero más próximo...?
Veo que lo que necesitas es que la función te redondee el float al número más próximo. Alguna vez vi en el foro del CCS esta instrucción:
floor(n+0.49999);
En donde n es la variable o número a redondear.
Saludos
-
En caso de que no lo soluciones, usa esto:
int var1;
float rel;
,
,
,
,
rel = 18.6;// Aqui va el numero float, que quieres redondear
var1 = (int)rel;
if (rel-var1>=0.5)var1++;
finalmente en var1 queda el resultado;;
cordial saludo