2012-02-07 94 views
0

我正在使用PIC18F2550。用C18语言编程。
我需要转换的双串像下面的功能:PIC 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" 
    // ... 
} 
+0

sprintf()然后找到'。'并为空的正确的小数字符? – kenny 2012-02-07 21:44:25

+0

@kenny sprintf()在PIC上可能有点合适 – 2012-02-07 21:46:13

+0

@MartinBeckett如果你有空间,我相信它是可用的。或者滚动你自己的dtoa() – kenny 2012-02-07 21:52:28

回答

1

所以写一个!

5分钟,一小块方格纸和一杯咖啡就是它应该做的。
事实上,它是一个很好的面试问题

1

一般来说,Newlib C库(BSD许可证,从红帽,Cygwin的一部分,以及在许多许多使用“裸“金属”嵌入式系统编译器)是一个很好的开始寻找标准C库中的有用资源的地方。

的Newlib dtoa.c来源是在src/newlib/libc/stdlib子目录中的源代码树:

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