2012-02-07 96 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如果你保留版權聲明,你幾乎可以做任何你想做的事情。