Search code examples
cprintfformat-string

How to parameterize precision of float on printf format


I have a C program that output values to stdout from measure. I use printf to display them and the format allows me to change the precision

 printf("Scan=%d S_0=%.5f S_1=%.5f S_2=%.5f S_3=%.5f", scanId, S0, S1, S2, S3);

My issue is that I have a lot of printing like this one and if I want to change the precision quickly I have to get on each one and change it. I was wondering if it was possible to use something like a #define to have it on a precise location and it will apply on each printf at compilation. I know it is not possible easily without recompile but I'm ok with that. I know something similar as I ask here in python is:

f"{s_0:.{prec}f}"

Solution

  • One way would be to do a #define (as you guessed) like this:

    #define PFLT "%.5f"
    
    printf("Scan=%d S_0=" PFLT " S_1=" PFLT " S_2=" PFLT " S_3=" PFLT, scanId, S0, S1, S2, S3);
    

    Then to change the precision you just need to alter the #define and recompile.