Variable interpolation inside printf-style formatting functions

Is there a way to pass the variable for the floating point precision parameter to printf format string functions in Objective-C (or even C)? For example, in TCL and other scripting languages, I can do something like this:

set precision 2 puts [format "%${precision}f" 3.14159] 

and the output will, of course, be 3.14. I would like to do something like this in Objective-C:

 float precision = 2 NSString *myString = [NSString stringWithFormat:@".2f", 3.14159] 

except that I would like to include precision as a variable. How can I do that?

+7
source share
2 answers

Yes, the line format specifiers for printf that are used to format Cocoa include a variable precision specifier, * , placed after the decimal point:

 int precision = 3; NSLog(@"%.*f", precision, 3.14159); NSString *myString = [NSString stringWithFormat:@".*f", precision, 3.14159]; 
+6
source

You can do this by making the format string of the variable and then passing it to stringWithFormat, for example:

 float precision = 2; NSString* formatString = [NSString stringWithFormat:@"%%.%df", precision]; NSString* myString = [NSString stringWithFormat:formatString, 3.14159]; 

The format string indicates that you need the character "%" followed by the character ".". and then the value stored in the variable "precision" and then "f".

+1
source

All Articles