PIC C18: преобразование двойной строки - PullRequest
0 голосов
/ 08 февраля 2012

Я использую PIC18F2550. Программирование на языке C18.
Мне нужна функция, которая преобразует double в строку, как показано ниже:

void dtoa(  char *szString,             // Output string
            double dbDouble,            // Input number
            unsigned char ucFPlaces)    // Number of digits in the resulting fractional part
{
    // ??????????????
}

Чтобы вызываться так в основной программе:

void main (void)
{
    // ...
    double dbNumber = 123.45678;
    char szText[9];
    dtoa(szText, dbNumber, 3); // szText becomes "123.456" or rounded to "123.457"
    // ...
}

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Tiny printf может работать для вас: http://www.sparetimelabs.com/tinyprintf/index.html

1 голос
/ 08 февраля 2012

Как правило, библиотека Newlib C (лицензия BSD от RedHat, входящая в состав Cygwin, а также используемая во многих многих «чистых» компиляторах встроенных систем) является хорошим местом для начала полезных источников для вещей, которые могут бытьв стандартной библиотеке C.

Исходники Newlib dtoa.c находятся в подкаталоге src/newlib/libc/stdlib дерева исходных текстов:

Файл будет немного странным, поскольку Newlib использует несколько нечетных макросов для объявлений функций, ноадаптация должна быть простой - и, имея BSD-лицензию, вы можете делать с ней все, что захотите, если сохраните на ней уведомление об авторских правах.

1 голос
/ 08 февраля 2012

Итак, напишите один!

5 минут, немного миллиметровки и кофе - все, что нужно.
На самом деле это хороший вопрос для интервью

...