I guess you mean by s.f. the format string in the sprintf function which is '%.2f' in your example.
There is a way to specify variable number of characters by using asterisks (*), like this example:
% 6 is the width
% 3 is the number of decimals
% 0.123456 is the number to be formatted
sprintf('%*.*f', 6, 3, 0.123456)
Another longer way would be to use sprintf to build your format string.
fs = sprintf('%%%d.%df',6,3);
sprintf(fs, 0.123456);