Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. // C program for implementation of ftoa()
  2. #include<stdio.h>
  3. #include<math.h>
  4.  
  5. // reverses a string 'str' of length 'len'
  6. void reverse(char *str, int len)
  7. {
  8. int i=0, j=len-1, temp;
  9. while (i<j)
  10. {
  11. temp = str[i];
  12. str[i] = str[j];
  13. str[j] = temp;
  14. i++; j--;
  15. }
  16. }
  17.  
  18. // Converts a given integer x to string str[]. d is the number
  19. // of digits required in output. If d is more than the number
  20. // of digits in x, then 0s are added at the beginning.
  21. int intToStr(int x, char str[], int d)
  22. {
  23. int i = 0;
  24. while (x)
  25. {
  26. str[i++] = (x%10) + '0';
  27. x = x/10;
  28. }
  29.  
  30. // If number of digits required is more, then
  31. // add 0s at the beginning
  32. while (i < d)
  33. str[i++] = '0';
  34.  
  35. reverse(str, i);
  36. str[i] = '\0';
  37. return i;
  38. }
  39.  
  40. // Converts a floating point number to string.
  41. void ftoa(float n, char *res, int afterpoint)
  42. {
  43. // Extract integer part
  44. int ipart = (int)n;
  45.  
  46. // Extract floating part
  47. float fpart = n - (float)ipart;
  48.  
  49. // convert integer part to string
  50. int i = intToStr(ipart, res, 0);
  51.  
  52. // check for display option after point
  53. if (afterpoint != 0)
  54. {
  55. res[i] = '.'; // add dot
  56.  
  57. // Get the value of fraction part upto given no.
  58. // of points after dot. The third parameter is needed
  59. // to handle cases like 233.007
  60. fpart = fpart * pow(10, afterpoint);
  61.  
  62. intToStr((int)fpart, res + i + 1, afterpoint);
  63. }
  64. }
  65.  
  66. // driver program to test above funtion
  67. int main()
  68. {
  69. char res[20];
  70. float n = 233.007;
  71. ftoa(n, res, 4);
  72. printf("\n\"%s\"\n", res);
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement