0

我正在使用 PIC18F2550。使用 C18 语言对其进行编程。
我需要一个将双精度转换为字符串的函数,如下所示:

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"
    // ...
}
4

3 回答 3

1

一般来说,Newlib C 库(BSD 许可证,来自 RedHat,Cygwin 的一部分,也用于许多“裸机”嵌入式系统编译器)是一个很好的起点,可以从标准中的有用资源开始C 库。

Newlibdtoa.c源代码位于src/newlib/libc/stdlib源代码树的子目录中:

该文件会有点奇怪,因为 Newlib 对函数声明使用了一些奇怪的宏,但应该很容易适应——而且,作为 BSD 许可,如果你保留它,你几乎可以用它做任何你想做的事情上面的版权声明。

于 2012-02-07T22:35:52.587 回答
1

所以写一个!

5分钟,一点方格纸和一杯咖啡就足够了。
事实上这是一个很好的面试问题

于 2012-02-07T21:47:02.810 回答
1

微小的 printf 可能对你有用:http ://www.sparetimelabs.com/tinyprintf/index.html

于 2012-02-07T21:51:00.367 回答