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