2012-01-06 102 views
7

有沒有辦法在Objective-C(甚至C)中的printf樣式字符串格式化函數中傳遞浮點精度參數的變量?例如,在TCL和其他腳本語言中,我可以這樣做:printf樣式格式化函數中的可變插值

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

並且輸出結果當然是3.14。我想在Objective-C中做類似的事情:

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

除了我想包括精度作爲變量。如何才能做到這一點?

+0

你可以使用stringWithFormat兩次:一次組裝格式字符串,第二次將創建的格式應用於您的值。 – 2012-01-06 17:10:01

回答

6

是的,string format specifiersprintf,其用於由可可進行格式化,包括可變精度說明,*置於小數點後:

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

完美。這正是我所期待的。 – Ampers4nd 2012-01-06 17:27:21

1

您可以通過您的格式字符串變量,然後傳遞,爲stringWithFormat,這樣做:

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

格式字符串說你想要一個「%」符號後跟一個「」然後存儲在變量「精度」後面跟着「f」的值。