Objective c 如何定义变量字符串格式说明符

Objective c 如何定义变量字符串格式说明符,objective-c,format-specifiers,Objective C,Format Specifiers,我有这行代码 // valueX is a long double (long double is a huge floating point) NSString *value = [NSString stringWithFormat: @"%.10Lg", valueX]; 此格式说明符最多指定10个十进制数字,但我不想将其硬编码为10 我有一个变量numberOfDigits,我想用它来定义位数。对于那些渴望否决这个问题的人来说,这并不像看上去那么容易。我不能用%@替换10,因为%.10L

我有这行代码

// valueX is a long double (long double is a huge floating point)
NSString *value = [NSString stringWithFormat: @"%.10Lg", valueX];
此格式说明符最多指定10个十进制数字,但我不想将其硬编码为10

我有一个变量
numberOfDigits
,我想用它来定义位数。对于那些渴望否决这个问题的人来说,这并不像看上去那么容易。我不能用
%@
替换
10
,因为
%.10Lg
本身就是一个格式说明符


好的,我可以创建一组字符串,比如
@“%.5Lg”
@“%.8Lg”
@“%.9Lg”
。。。然后切换,但我想知道是否还有其他方法…

如果您阅读了格式说明符的手册页面。您可以将精度替换为
*
,这意味着它将取而代之的是参数

int numDigits = 10;
NSString *value = [NSString stringWithFormat:@"%.*Lg", numDigits, valueX];

我在核心基础参考文献中找不到这一点,但我知道这是写在<代码> 3版的Prtff

,如果您阅读手册页的格式说明符。您可以将精度替换为

*
,这意味着它将取而代之的是参数

int numDigits = 10;
NSString *value = [NSString stringWithFormat:@"%.*Lg", numDigits, valueX];

我在核心基础参考文献中找不到这一点,但我知道这是写在<代码> 3版Prtuf男性页面。

< P>迪特里希的答案是最简单的,因此最好。请注意,即使没有内置的方法来指定参数的位数,您也可以先生成格式字符串,然后使用它:

- (NSString *) stringFromValue: (long double) value digits: (int) digits; {

  //First create a format string. Use "%%" to escape the % escape char.
  NSString *formatString =[NSString stringWithFormat: @"%%.%dLg", digits];

  return [NSString stringWithFormat: formatString, value];
}

迪特里希的答案是最简单的,因此也是最好的。请注意,即使没有内置的方法来指定参数的位数,您也可以先生成格式字符串,然后使用它:

- (NSString *) stringFromValue: (long double) value digits: (int) digits; {

  //First create a format string. Use "%%" to escape the % escape char.
  NSString *formatString =[NSString stringWithFormat: @"%%.%dLg", digits];

  return [NSString stringWithFormat: formatString, value];
}

明亮的这就是为什么你们有127K分,而我却在努力争取14K分,我已经这么做了很长时间了,仅此而已。谢谢迪特里希。我试图(但失败)记住格式说明符中数字变量的语法,而你救了我,帮我翻了一本K&R C的书。太棒了!!!!!!这就是为什么你们有127K分,而我却在努力争取14K分,我已经这么做了很长时间了,仅此而已。谢谢迪特里希。我试图(但失败)记住格式说明符中数字变量的语法,而你救了我,帮我翻了一本K&R C的书。我忘了这一点。(编辑)我忘了那一点。(编辑)