joh*_*ers 3 objective-c nsstring
考虑一下:
NSString *whatever=[NSString stringWithFormat:@"My float: %.2f",aFloat];
这将使我aFloat在构建字符串时将其舍入到2位小数whatever
假设我希望2in this语句可以赋值,这样根据aFloatI 的值可能会显示2或4个小数位.我该如何构建它stringWithFormat?
我希望能够做到这一点,而不是if简单地为不同的情况重复整行,而是以某种方式动态地改变%.2f部分.
Jer*_*myP 10
正确的答案是使用NSNumberFormatter.
但是,使用格式字符串的简单答案是使用星号说明符.根据Apple文档,格式字符串符合IEEE printf规范.该规范说明如下:
字段宽度或精度或两者可以用星号('*')表示.在这种情况下,int类型的参数提供字段宽度或精度.
这意味着
int precision = 2;
NSString *whatever=[NSString stringWithFormat:@"My float: %.*f", precision,aFloat];
// Asterisk in place of 2^^ ^^^^^^^^^ int variable
Run Code Online (Sandbox Code Playgroud)
应该管用.我不得不说,我没有尝试过,我倾向于使用NSNumberFormatters.
您需要首先构建格式:
NSInteger precision = 2;
NSString *format = [@"My float: %." stringByAppendingFormat:@"%d", precision];
format = [format stringByAppendingString:@"f"];
NSString *whatever=[NSString stringWithFormat:format, aFloat];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1414 次 |
| 最近记录: |