Округление float до нужного десятичного разряда |
|
Написал microsin
|
01.07.2009 |
Иногда в библиотеках C для микроконтроллеров отсутствует функция round. Не оказалось её и в модулях IAR EWB for ARM. Здесь приведен один из вариантов реализации этой функции.
//-----------------------------------
/// Round val to rval.
//-----------------------------------
float round (float val, float rval)
{
val/=rval;
if (val<0)
{
val -= 0.5;
val = ceil(val);
}
else
{
val += 0.5;
val = floor(val);
}
return (val*rval);
}
Примеры вызова:
float pi100 = 3.14159265 * 100;
printf("%f", round(pi100, 0.01));
printf("%f", round(pi100, 0.1));
printf("%f", round(pi100, 1));
printf("%f", round(pi100, 10));
printf("%f", round(pi100, 100));
[См. также]
1. Описание стандартных функций cmath (math.h) http://www.cplusplus.com/reference/clibrary/cmath/.
|
Последнее обновление ( 02.07.2009 )
|