Тип float представляет собой значение с плавающей запятой двойной точности. Float часто используется для операций с данными, считываемыми с аналоговых выводов Arduino. Данный тип является знаковым и принимает значения от -3.4028235E+38 до 3.4028235E+38, точность 6-7 знаков. В памяти тип float занимает 4-е байта.
Примечания:
- в программировании для увеличения точности используется тип double, однако на платформе Arduino тип не даёт никаких преимуществ над типом float, так как они имеют одинаковую точность;
- хранение в памяти чисел с плавающей запятой в двоичной системе счисления обуславливает потерю точности. Например, 8.0 / 2.0 не обязательно равно 4.0. При сравнении двух чисел с плавающей запятой следует проверять не точное равенство, а разницу между этими числами, меньше ли она некого выбранной малого порога;
- арифметические операции над числами с плавающей запятой выполняются существенно медленнее, чем над целыми, что обусловлено аппаратными особенностями Arduino.
Пример:
1 2 3 4 5 6 7 |
int a; int b; float c; a = 1; b = b / 2; // b = 0, т.к. тип int не может хранить дробные числа c = (float)a / 2.0; // c = 0.5 (следует использовать 2.0, а не 2 !!!) |