Функция pow. Некорректное число
- Войдите на сайт для отправки комментариев
Втр, 18/08/2015 - 15:05
Здравствуйте, написал простейший код:
void loop() { if (Serial.available() > 0) { data = Serial.parseInt(); if (data != 0) { data = data - 1; result = pow(2,data); digitalWrite(LATH, LOW); shiftOut(SER, CLK, MSBFIRST, result); Serial.println(result); digitalWrite(LATH, HIGH); } } }
Почему-то на выводе у меня число в степени двойки и минус один, т.е ввожу 5, должен вывести 32, а по факту 31. Что я делаю не так?
Я долго тут объяснять не буду, но в AVR нет FPU (мат сопроцессор) отсюда такая каша
тип переменной result должен быть double !
подозреваю что он int :)
Serial.println ( ( int ) ( x + 0.5 ) ); // избавляемся от неточностей плавающей арифметики