在Objective C中使用两个参数格式化字符串

时间:2013-11-01 16:48:02

标签: objective-c nsstring stringwithformat

我有一个浮点值,它应该有一定数量的小数位。小数位数存储在变量中。

以下是代码行:

self.numberTextField.text = [NSString stringWithFormat:@"%.%df",result, [[NSUserDefaults standardUserDefaults] boolForKey:@"decimalPlaces"]];

我的问题是我不知道如何以正确的方式组合%f和%d说明符。 有什么想法吗?

感谢您的回答!

2 个答案:

答案 0 :(得分:1)

您可以用星号(*)替换字段宽度或精度,然后它将从参数列表中选取值。

int width = 5;
int precision = 2;
double value = 3.1415926;
NSString* formattedNumber = [NSString stringWithFormat: @"%*.*f", width, precision, value];

http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html

还要考虑使用NSNumberFormatter。它具有了解国际化的优势。

答案 1 :(得分:0)

我认为你必须分两个阶段完成这个工作

首先创建具有所需小数点数的格式化字符串:

NSString *format = [NSSString stringWithFormat:@"%%.%if", numberOfPlaces];

%%是一个转义百分比,因此格式中唯一替换的部分是%i,即numberOfPlaces = 2将给出格式= @“%。2f”

然后使用该格式字符串创建最终结果

NSString *valueString = [NSString stringWithFormat:format, myLongFloat];