Gustavo Ramirez
/
FLTtoChar
Flotante a caracter para pasar de fotante a caracter uselo con Internet de las cosas
main.cpp
- Committer:
- tony63
- Date:
- 2015-05-03
- Revision:
- 0:64c04c367702
File content as of revision 0:64c04c367702:
// C program for implementation of ftoa() #include "mbed.h" #include<stdio.h> #include<math.h> Serial pc(USBTX,USBRX); // reverses a string 'str' of length 'len' // driver program to test above funtion void reverse(char *str, int len) { int i=0, j=len-1, temp; while (i<j) { temp = str[i]; str[i] = str[j]; str[j] = temp; i++; j--; } } // Converts a given integer x to string str[]. d is the number // of digits required in output. If d is more than the number // of digits in x, then 0s are added at the beginning. int intToStr(int x, char str[], int d) { int i = 0; while (x) { str[i++] = (x%10) + '0'; x = x/10; } // If number of digits required is more, then // add 0s at the beginning while (i < d) str[i++] = '0'; reverse(str, i); str[i] = '\0'; return i; } // Converts a floating point number to string. void ftoa(float n, char *res, int afterpoint) { // Extract integer part int ipart = (int)n; // Extract floating part float fpart = n - (float)ipart; // convert integer part to string int i = intToStr(ipart, res, 0); // check for display option after point if (afterpoint != 0) { res[i] = '.'; // add dot // Get the value of fraction part upto given no. // of points after dot. The third parameter is needed // to handle cases like 233.007 float fp=10; fpart =fpart * pow(fp,afterpoint); intToStr((int)fpart, res + i + 1, afterpoint); } } int main() { char res[20]; float n = 233.007; ftoa(n, res, 4); pc.printf("\n\"%s\"\n", res); return 0; }