PIC C18:将双精度数转换为字符串
我用的是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"
// ...
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
所以写一篇吧!
5 分钟,一点方格纸和一杯咖啡就足够了。
事实上这是一个很好的面试问题
So write one!
5mins, a bit of graph paper and a coffee is all it should take.
In fact it's a good interview question
一般来说,Newlib C 库(BSD 许可证,来自 RedHat,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 许可,如果您保留版权声明,您几乎可以用它做任何您想做的事情。
Generally, the Newlib C library (BSD license, from RedHat, part of Cygwin as well as used in many many "bare-metal" embedded-systems compilers) is a good place to start for usefuls sources for things that would be in the standard C library.
The Newlib
dtoa.c
sources are in thesrc/newlib/libc/stdlib
subdirectory of the source tree:dtoa.c
file: http://sourceware.org/cgi-bin/cvsweb.cgi/~checkout~/src/newlib/libc/stdlib/dtoa.c?rev=1.5&content-type=text/plain&cvsroot=srcThe file is going to be a little odd, in that Newlib uses some odd macros for the function declarations, but should be straightforward to adapt -- and, being BSD-licensed, you can pretty much do whatever you want with it if you keep the copyright notice on it.
Tiny printf 可能适合您: http://www.sparetimelabs.com/tinyprintf/index.html< /a>
Tiny printf might work for you: http://www.sparetimelabs.com/tinyprintf/index.html