How to extract the decimal part from a floating point number in C

3 Answers

0 votes
#include <stdio.h>
    
int main(void)
{
    float f = 65.847209;
   
    char array[16] = "";
    char decimalpart[16] = "";
       
    sprintf(array, "%.6f", f);
  
    int decimal_point_found = 0, j = 0;
       
    for(int i = 0; array[i]; i++) {
        if (array[i] == '.') {
            decimal_point_found = 1;
        }
        if (decimal_point_found && array[i] != '.') {
            printf("array[%d] = %c\n", i, array[i]);
            decimalpart[j++] = array[i];
        }
    }  
     
    puts(decimalpart);
        
    return 0;
}
     
      
      
      
/*
run:
   
array[3] = 8
array[4] = 4
array[5] = 7
array[6] = 2
array[7] = 0
array[8] = 6
847206

*/

 



answered Nov 15, 2023 by avibootz
0 votes
#include <stdio.h>
#include <math.h>

int main(void)
{
    double d = 65.847209;
    double integral;
  
    // double modf(double x, double *integer)
    
    double decimalpart = modf(d, &integral);
      
    printf("%lf", decimalpart);
       
    return 0;
}
    
     
     
     
/*
run:
  
0.847209
 
*/

 



answered Nov 15, 2023 by avibootz
0 votes
#include <stdio.h>

int main(void)
{
    double d = 65.847209;
    double integral;
  
    int intpart = (int)d;
    double decimalpart = d - intpart;

    printf("%lf", decimalpart);
       
    return 0;
}
    
     
     
     
/*
run:
  
0.847209
 
*/

 



answered Nov 15, 2023 by avibootz
...