Округление 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 )