我使用的是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"
// ...
}
答案 0 :(得分:1)
所以写一个!
5分钟,它应该采取一些方格纸和咖啡 事实上,这是一个很好的面试问题
答案 1 :(得分:1)
小小的printf可能适合您:http://www.sparetimelabs.com/tinyprintf/index.html
答案 2 :(得分:1)
通常,Newlib C库(来自RedHat的BSD许可证,Cygwin的一部分以及许多“裸机”嵌入式系统编译器中使用的)是一个很好的起点,可用于有用的资源。在标准C库中。
Newlib dtoa.c
源位于源树的src/newlib/libc/stdlib
子目录中:
dtoa.c
文件当前版本的直接链接:http://sourceware.org/cgi-bin/cvsweb.cgi/~checkout~/src/newlib/libc/stdlib/dtoa.c?rev=1.5&content-type=text/plain&cvsroot=src 该文件有点奇怪,因为Newlib使用一些奇怪的宏来进行函数声明,但应该很容易适应 - 而且,获得BSD许可,你几乎可以做任何你想做的事情如果您保留版权声明。