Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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}"
like image 581
Apo Avatar asked Mar 03 '26 18:03

Apo


1 Answers

You can use a * symbol in place of the precision, in which case the precision is given as a parameter. Then you can define a constant to pass to printf.

#define P_FLOAT 5

printf("Scan=%d S_0=%.*f S_1=%.*f S_2=%.*f S_3=%.*f", 
       scanId, P_FLOAT, S0, P_FLOAT, S1, P_FLOAT, S2, P_FLOAT, S3);
like image 180
dbush Avatar answered Mar 05 '26 09:03

dbush