有没有办法在Objective-C(甚至C)中的printf样式字符串格式化函数中传递浮点精度参数的变量?例如,在TCL和其他脚本语言中,我可以这样做:
set precision 2
puts [format "%${precision}f" 3.14159]
,输出当然是3.14。我想在Objective-C中做类似的事情:
float precision = 2
NSString *myString = [NSString stringWithFormat:@".2f", 3.14159]
除了我想将precision作为变量包含在内。怎么办呢?
答案 0 :(得分:6)
是的,Cocoa用于格式化的printf
string format specifiers包含一个位于小数点后面的变量精度说明符*
:
int precision = 3;
NSLog(@"%.*f", precision, 3.14159);
NSString *myString = [NSString stringWithFormat:@".*f", precision, 3.14159];
答案 1 :(得分:1)
您可以通过将格式字符串变为变量,然后将其传递给stringWithFormat来实现,如下所示:
float precision = 2;
NSString* formatString = [NSString stringWithFormat:@"%%.%df", precision];
NSString* myString = [NSString stringWithFormat:formatString, 3.14159];
格式字符串表示您需要一个“%”符号后跟一个“。”然后将值存储在变量“precision”中,后跟“f”。