PIC MICROs: Как преобразовать число с плавающей точкой в ​​отдельный массив символов?

Я получаю переменную с плавающей запятой от чтения и преобразования АЦП, мне нужно отображать цифры отдельно на 7-сегментном дисплее, поэтому мне нужны цифры отдельно.

переменная плавания = 12,34; // мне нужен способ конвертировать это

int rb [1,2,3,4]; // в это

Если бы это был int, было бы очень легко использовать подразделения и мод, но я думаю, что это должен быть более элегантный способ сделать это. не так ли?

Любая помощь приветствуется.

Спасибо за просмотр

-4

Решение

Сначала вам нужно преобразовать число с плавающей точкой в ​​строку, так как вы не сказали нам, какой компилятор используется, я полагаю, C30, Вот у вас есть код для ftoa (конвертировать float в строку). Если вы используете другой компилятор, например C18, посмотрите на их форумах, существует множество реализаций (или просто конвертируйте тот, что для C30).

unsigned char floatAsString[32];
ftoa(var, floatAsString);

Затем вам нужно создать свой массив, вам нужно проверить, есть ли у числа с плавающей точкой десятичные дроби или нет, чтобы пропустить точку для десятичных знаков:

int len;

if((int)var == var)
len = strlen(floatAsString);
else
len = strlen(floatAsString) - 1;

Затем, наконец, вы можете заполнить массив int;

int theArray[len];
unsigned char tmpBuffer[2];
tmpBuffer[1] = '\0';

int j;
int i;

unsigned char foundDot;

for(j = 0; j < len; j++)
{
if(foundDot)
i = j - 1;
else
i = j;

unsigned char theChar = floatAsString[j];

if(theChar == '.')
{
foundDot = 1;
continue;
}

tmpBuffer[0] = theChar;
theArray[i] = atoi(tmpBuffer);
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]