Оба являются тем, что Microsoft называет «приблизительными типами данных числа».
Есть причина. Поплавок имеет точность 7 цифр и двойную 15. Но я видел, что это случалось много раз, что 8.0 - 1.0 - 6.999999999. Это связано с тем, что они не гарантируют точно представлять дробь десятичного числа.
Если вам нужна абсолютная неизменная точность, пойдите с десятичным или интегральным типом.
Объявить "int temp;" на вершине. То же самое для всех других переменных. Не объявляйте переменные в GetState, просто используйте их. Удалите все строки возврата из Getstate (). Просто установите "temp = DHT.temperame"; устанавливает переменную и достаточно.
Поместите функцию GetState()
перед loop()
(там, где она вызывается). Или, если хотите, вы можете добавить прототип до loop()
:
void GetState();
void loop() {
...