PIC C18: преобразование двойной строки

Я использую 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 ответа

Так что пиши один!

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

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

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

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

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

Другие вопросы по тегам