float到任意小数精度的字符串

时间:2014-03-17 21:54:45

标签: objective-c

我想编写一个方法,它接受一个给定的float,一个精度,并对其进行格式化,以便显示给定的精确小数位数。

当然,这种方法也可以做其他事情。

现在,我有

[NSString stringWithFormat:@"0%.3f", s]; //s is the float argument

将float的字符串赋予3个小数位。现在,我想让它有n个小数位。实际上,我想要的是:

[NSString stringWithFormat:@"0%.%if", n, s]; 
//n is the precision argument, s is the float argument

但由于显而易见的原因,它不起作用。

有解决方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用…"%.*f", n, s。有关详情,请stringWithFormat:跟随0

不确定原始格式字符串中的"%0*.*f", 3 + n, n, s前缀是什么。您当然不需要它作为格式规范的一部分。如果用于零填充,例如两位数,则应该执行类似{{1}}的操作。

答案 1 :(得分:1)

您可以将星号(*)作为格式字符串中的精度宽度传递。 *星号表示宽度将被指定为变量参数中的变量(在要打印的变量之前)。所以

[NSString stringWithFormat:@"0%.*f", n, s];

其中n是描述宽度的整数,s是浮点值。