Перевод double в char - C (СИ)
Формулировка задачи:
char buff[5];
float volt = readADC()*0.02932; // Тут в итоге получится должно 1.46 или что-нибудь такое.
sprintf(buff,"%f",volt); // этой строкой я его разлагаю на байты по идее.
lcd_dat(buff[1]); //и тут побайтно вывожу на экран, но вместо чисел закорючки (Решение задачи: «Перевод double в char»
textual
Листинг программы
float volt = (readADC()*2.56*(28.16/2.56))/1023; //28.6 Коэффициент делителя dtostrf(volt,5, 3, buff);
Объяснение кода листинга программы
- В данном коде переменная
voltпредставляет собой значение, полученное с помощью функцииreadADC(). Это значение представлено в формате float и требует дальнейшей обработки. - Для корректного представления значения в формате char, необходимо выполнить ряд математических операций. В данном случае используется формула: (readADC()2.56(28.16/2.56))/1023.
- Значение 28.16 в данной формуле представляет собой коэффициент делителя.
- Результат вычислений сохраняется в переменной
volt. - Далее, функция
dtostrf()используется для преобразования значения переменнойvoltиз формата float в строковый формат. - Параметры функции
dtostrf()представлены в следующем порядке:volt- значение, которое необходимо преобразовать.5- количество знаков после запятой, которые необходимо сохранить в результате преобразования.3- указатель на буфер, в который будет сохранено результат преобразования. В данном случае, буфером является переменнаяbuff.
- Результатом выполнения данного кода будет строковое представление значения переменной
voltс точностью до пятого знака после запятой.