use*_*472 5 cocoa-touch nsnumberformatter
我想创建一个浮点数的格式化输出,并在Cocoa-Touch上进行正确的本地化.输出应该等于printf("%<a>.<b>f", n),其中<a>是总位数,<f>最大小数位数.
NSNumberFormatter使用<a>=6和设置<f>=2 :(平台是iOS 5.1 SDK,Xcode 4.3.3和iPhone模拟器5.1)
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterDecimalStyle];
[nf setPaddingCharacter:@" "];
[nf setUsesGroupingSeparator:NO];
[nf setLocale:[NSLocale autoupdatingCurrentLocale]];
[nf setUsesSignificantDigits:YES];
[nf setMaximumSignificantDigits:6];
[nf setMaximumFractionDigits:2];
[nf setRoundingMode:NSNumberFormatterRoundFloor];
NSLog(@"Test: %@", [nf stringFromNumber:[NSNumber numberWithDouble:2.64324897]]);
Run Code Online (Sandbox Code Playgroud)
预期输出(使用德语区域设置):Test: 2,64
观察到的输出(使用德语语言环境):Test: 2,64324
其他观察:我试图对小数位数使用不同的值,例如[nf setMaximumFractionDigits:4]或[nf setMaximumFractionDigits:0].结果未更改,似乎忽略了小数位.将区域设置更改为仅更改,为a .,而不是小数位数.
问题:如何将printf-format字符串正确转换为NSNumberFormatter?
JFS*_*JFS 11
瑞恩并非完全错误.使用localizedStringWithFormat方法:
使用objective-c
NSNumber *yourNumber = [nf numberFromString:yourString];
//to create the formatted NSNumber object
NSString *yourString = [NSString localizedStringWithFormat:@"%.2F", yourNumber];
//to create the localized output
Run Code Online (Sandbox Code Playgroud)
使用SWIFT 3
let yourString: String
yourString = String.localizedStringWithFormat("%.2F", yourDoubleNumber) //no need for NSNumber Object
Run Code Online (Sandbox Code Playgroud)
有点晚了但它仍然可能会有所帮助.祝好运!
| 归档时间: |
|
| 查看次数: |
9731 次 |
| 最近记录: |