Округление float до нужного десятичного разряда Печать
Добавил(а) microsin   

Иногда в библиотеках C для микроконтроллеров отсутствует функция round. Не оказалось её и в модулях IAR EWB for ARM. Здесь приведен один из вариантов реализации этой функции.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//-----------------------------------
// Округление val к 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) site:cplusplus.com.